0

我有一个网格面板,我在 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,
           }
    });


我的搜索想法不好?我该如何解决谢谢

4

1 回答 1

0

如果您在商店的“加载”功能中使用参数,则这些参数仅涉及单个请求,因此如果您单击工具栏的下一页,您将不会发布 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);
}
于 2013-09-10T15:58:33.847 回答