Extjs Grid - 单击具有搜索条件的下一页按钮

时间:2013-07-05 07:30:46

标签: search extjs grid paging extjs4.1

我有一个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,
           }
    });


我的搜索想法并不好?我该如何解决这个问题

1 个答案:

答案 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);
}