【发布时间】:2019-04-15 19:01:05
【问题描述】:
在加入网格时,日期列没有排序,所以我写了sorterFn(),称为自定义排序,它按预期工作。但是当我们在排序更改时单击网格列时,网格日期并没有得到排序。
我已尝试通过查看网格侦听器中的ExtJS Docx [ Ext.grid.header.Container and Ext.grid.Panel] 事件来编写sortChange(),但未调用sortChange() 事件本身。
这是我在加载时编写的示例代码,它按预期工作。
updateGrid: function(filter) {
me.store.load();
if(!Ext.isEmpty(me.getStore().sorters)){
me.getStore().sorters.clear();
}
me.getStore().setSorters([{
sorterProperty: "CALENDAR_DATE",
direction: "ASC",
sorterFn: function (date1, date2) {
var d1, d2;
if(me.filterDef.mvValues.filter.frequencyFilter ==
DCRDashboardConstants.frequency['Daily']){
d1 = new Date(date1.data.CALENDAR_DATE).getTime();
d2 = new Date(date2.data.CALENDAR_DATE).getTime();
} else if(me.filterDef.mvValues.filter.frequencyFilter ==
DCRDashboardConstants.frequency['Weekly']){
d1 = new Date(date1.data.CALENDAR_DATE.split('-')
[0]).getTime();
d2 = new Date(date2.data.CALENDAR_DATE.split('-')
[0]).getTime();
} else {
d1 = date1.data.CALENDAR_DATE;
d2 = date2.data.CALENDAR_DATE;
}
return (d1 > d2) ? 1 : (d1 === d2 ? 0 : -1);
}
}]);
}
由于sorterFn: function (date1, date2) {}只会被调用一次(在网格加载时),我已经在下面给出的监听器中编写了这段代码,但问题是extjs没有调用偶数本身。
listeners: {
storeBeforeLoad: function(store) {
},
if(!Ext.isEmpty(me.getStore().sorters)){
me.getStore().sorters.clear();
}
me.getStore().setSorters([{
sorterProperty: "CALENDAR_DATE",
direction: "ASC",
sorterFn: function (date1, date2) {
var d1, d2;
if(me.filterDef.mvValues.filter.frequencyFilter ==
DCRDashboardConstants.frequency['Daily']){
d1 = new Date(date1.data.CALENDAR_DATE).getTime();
d2 = new Date(date2.data.CALENDAR_DATE).getTime();
} else if(me.filterDef.mvValues.filter.frequencyFilter ==
DCRDashboardConstants.frequency['Weekly']){
d1 = new Date(date1.data.CALENDAR_DATE.split('-')
[0]).getTime();
d2 = new Date(date2.data.CALENDAR_DATE.split('-')
[0]).getTime();
} else {
d1 = date1.data.CALENDAR_DATE;
d2 = date2.data.CALENDAR_DATE;
}
return (d1 > d2) ? 1 : (d1 === d2 ? 0 : -1);
}
}]);
}
ExtJS 不调用此事件。您能否帮我对网格列的排序更改日期进行排序。
【问题讨论】:
标签: extjs