Всем доброго времени суток.
Я с очередным вопросом...
У меня есть грид, в нем есть постраничная навигация, и я даже поиск реализовал уже, но вот проблема в том что поиск работает корректно до той поры пока я не нажму кнопку для просмотра следующей страницы... если это сделать, то теряются настройки поиска(необходимые параметры в запросе сторы отсутствуют).... и грид отображает не отфильтрованную информацию... хотя по результатам поиска найдено 4 страницы(с учетом настроек лимитов).
В общем не знаю как объяснил.
Был бы рад вашим примерам, или советам.
Ниже приводится листинг. Если что извиняюсь за большие размеры.
function gUsers(){
var storeUsers = getStore('users');
// var str = null;
function sendForFind(b, e) {
var str = field.getValue();
storeUsers.reload(
{params: {
start : 0,
limit : 5,
text : str,
combo : comboList.getValue(),
box : checkBox
}
}
);
}
var checkBox = false;
var CheckBox = new Ext.form.Checkbox( {
id : '001',
title : 'box',
listeners:{
check: function() {
(checkBox == true) ? (checkBox = false) : (checkBox = true);
},
specialkey: function (a, e) {
if(e.getKey() == e.ENTER) {
sendForFind();
}
}
}
})
var massList = [
['name', 'Имя'],
['email', 'Почта'],
['code', 'Код']
];
var listStore = new Ext.data.ArrayStore( {
data : massList,
autoLoad : true,
fields: [
{
name : 'val',
type : 'string'
}, {
name : 'txt',
type : 'string'
}
]
});
var comboList = new Ext.form.ComboBox( {
value : 'name',
store : listStore,
// readOnly : true,
displayField : 'txt',
valueField : 'val',
width : 100,
mode : 'local',
triggerAction : 'all',
listeners: {
select:function() {
// comboList.setValue('txt');
},
specialkey: function (a, e) {
if(e.getKey() == e.ENTER) {
sendForFind();
}
}
}
});
var field = new Ext.form.TextField({
fieldLabel : 'Short name',
width : 250,
name : 'fielset',
listeners: {
specialkey: function (a, e) {
if(e.getKey() == e.ENTER) {
sendForFind();
}
}
}
});
var button = new Ext.Button( {
text : '<b>Найти</b>',
name : 'button_search',
handler : sendForFind,
listeners: {
click: function(){
// buttonDown = true;
// alert('');
}
}
});
var gridUsers = new Ext.grid.GridPanel({
title : 'Пользователи',
trackMouseOver:false,
disableSelection:true,
loadMask: true,
// height : 400,
autoHeight : true,
width : 800,
store : storeUsers,
// store : buttonDown == true ? getStore('users', true) : storeUsers,
// deferredReander : false,
listeners: {
celldblclick: function (G, row, column, e) {
win(formUsersRe(G.getStore().getAt(row)));
// Ext.Msg.alert('Info', G.getStore().getAt(row).get('name'));
}
},
bbar: new Ext.PagingToolbar( {
pageSize : 5,
store : storeUsers,
// prependButtons: true,
displayInfo : true
}),
tbar: [
{
text: 'Добавить',
handler: function () {
win(formUsers(null));
}
},'-', '->','-', 'Поиск: ', field, comboList
, ' ', 'Целиком', CheckBox, '-', button
],
columns: [
{
header : 'Номер',
dataIndex : 'id',
sortable : true
},
{
header : 'Имя пользователя',
dataIndex : 'name',
sortable : true
},
{
header : 'Тип пользователя',
dataIndex : 'type',
sortable : true
},
{
header : 'E-mail',
dataIndex : 'email',
sortable : true
},
{
header : 'Код',
dataIndex : 'code',
sortable : true
},
{
header : 'Пароль',
dataIndex : 'pass',
sortable : true
},
{
header : 'Дата регистрации',
dataIndex : 'date_reg',
sortable : true
},
{
header : 'Последний визит',
dataIndex : 'date_last',
sortable : true
}
]
});
return gridUsers;
}