在网格sortchange事件之前更改store extraParams

时间:2013-07-17 13:13:32

标签: extjs extjs4 extjs4.2

要求

每次对网格数据进行排序时 - 在执行事件之前,我想使用新排序属性的值更改存储extraParams。喜欢如果我在 DESC 方向对 Name 列进行排序 - 在事件执行之前我想覆盖商店的extraParams 名称列的dataIndex列和方向属性 DESC

我的商店还将remoteSort属性设置为true

我正在使用ExtJS 4.2。

问题

我在网格上尝试了sortchange事件侦听器,但是在调用数据API并加载记录之后执行它。我想要的是 beforesortchange 之类的东西。

全部使用remoteSort : true

下一个问题是,如果我从this.getStore().load();调用sortchange,那么我的数据api会被调用两次,这没有用。

代码

网格监听器:

sortchange: function(ct, column, direction, eOpts) {
    this.getStore().getProxy().extraParams = {
        'sort'  : column.dataIndex,
        'dir'   : direction
    }
    //  load() will call the data api again once the data loading is over
    //this.getStore().load();
}

我也试过跟踪网格侦听器,但要么我没有获得新的网格排序参数,要么根本不调用它们: beforeloadbeforesyncbeforeprefetchload

参考

https://stackoverflow.com/questions/12338407/custom-function-call-after-extjs-4-grid-sort/12338906#12338906

1 个答案:

答案 0 :(得分:4)

使用beforeload事件在发送之前更改extraParam对象:

listeners: {
    beforeload: function(store, operation, eOpts){
        if(store.sorters && store.sorters.getCount())
        {
            var sorter = store.sorters.getAt(0);
            store.getProxy().extraParams = {
                'sort'  : sorter.property,
                'dir'   : sorter.direction
            };
        }
    }
}