При загрузке в сетку столбец даты не сортируется, поэтому я написал sorterFn()
, называемый настраиваемой сортировкой, и он работает, как и ожидалось. Но когда мы нажимаем на столбец сетки при изменении сортировки, даты сетки не сортируются.
Я пытался написать sortChange()
, просматривая событие ExtJS Docx [ Ext.grid.header.Container and Ext.grid.Panel]
в слушателе сетки, но само событие 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. Не могли бы вы помочь мне отсортировать даты сортировки изменения столбца сетки.