每次对网格数据进行排序时 - 在执行事件之前,我想使用新排序属性的值更改存储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();
}
我也试过跟踪网格侦听器,但要么我没有获得新的网格排序参数,要么根本不调用它们:
beforeload
,beforesync
,beforeprefetch
,load
。
答案 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
};
}
}
}