我有一个gridpanel,我在initComponet函数中创建存储,如
,initComponent: function() {
var store = Ext.create('Ext.data.Store', {
model: 'MyObject',
autoLoad: false,
pageSize:22,
remoteSort:true,
proxy: {
type: 'ajax',
url: 'example.php',
reader: {
type: 'json',
totalProperty: 'total',
root: 'results'
}
}
});
this.store = store;
this.dockedItems = [{
xtype: 'pagingtoolbar',
store: this.store,
displayMsg: '{0} - {1} / {2}',
emptyMsg: 'empty',
dock: 'bottom',
displayInfo: true,
pageSize: 22
}];
this.callParent(arguments);
this.store.load({params:{start:0, limit:22}});
}
我使用某个值进行表单搜索,当我按下搜索按钮时,我将执行以下代码
grid.store.load({
params:{
start:0,
limit:22,
signalSearch: 1,
search1: myValue1,
search2: myValue2,
}
});
在我的php文件中会抓住它以了解该搜索
if ( have $_REQUEST["signalSearch"]) {
// print json with condition search
}else {
// print json with all data
}
结果以2页返回(很好)。但是,当我按下一页按钮查看第2页上的一些结果但是我的商店加载失败(我认为他们按下store.load({params:{start:0, limit:22}});
当我按下一页按钮并在我的php文件中运行与其他情况)。
这不是电话
grid.store.load({
params:{
start:0,
limit:22,
search1: myValue1,
search2: myValue2,
}
});
我的搜索想法并不好?我该如何解决这个问题
答案 0 :(得分:0)
如果您在商店的“加载”功能中使用params,那么这些只会引用单个请求,因此如果您单击工具栏的下一页,则不会发布signalSearch参数。 您应该在加载前事件上注册自定义侦听器并添加参数:
initComponent: function(){
....
this.callParent(arguments);
this.store.addListener('beforeload', function(store, operation){
Ext.apply(operation.params, {
signalSearch: 1 // Or you could make conditions if apply this search param
});
return true;
}, this);
}