4

要求

每次对网格数据进行排序 - 在事件执行之前,我想extraParams用新的排序属性的值更改存储。就像如果我在DESC方向对列Name进行排序- 在事件执行之前,我想用Name列和方向属性DESC覆盖store 。extraParamsdataIndex

我的商店也将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();
}

我也尝试关注网格侦听器,但要么我没有得到新的网格排序参数,要么根本没有调用它们: beforeload, beforesync, beforeprefetch, load

参考

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

4

1 回答 1

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
            };
        }
    }
}
于 2013-07-17T13:58:10.880 回答