extjs - 当我们单击网格列即单击网格列时,自定义日期排序不起作用
问题描述
在加入网格时,日期列未排序,因此我将其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 不调用此事件。您能否帮我对网格列的排序更改日期进行排序。
解决方案
storeBeforeLoad
如果您想在商店加载时加载此函数,则侦听器内没有代码,您可以试试这个
Ext.create('Ext.data.Store', {
//rest of configs of your store
listeners: {
load: {
fn: function(store, records, successful, operation, eOpts) {
//function here
}
},
beforeload: {
fn: function(store, operation, eOpts) {
// other function here
}
}
}
})
推荐阅读
- docker - 响应状态码不表示成功:401(未经授权)- Azure Devops Feed ASP.NET Core 3.1 Docker Build
- java - 如何计算图中红色和白色节点之间的边数?
- c# - 如何在 C# 表单的 4 个文本框中显示 4 个随机数?
- pandas - 如何删除具有已知列值的行?
- vim - “策略”E667:使用 vim 编辑 pcie_aspm/parameters/policy 时 Fsync 失败
- r - R:随着时间的推移,使用 3D 数组(纬度、经度和时间)计算函数的最佳方法是什么?
- c# - 我只想要 SQL Server 中的日期(SQL Server 2005 版本)
- mysql - MySQL JSON 数据类型/JPA 编码问题
- python - 使用 seaborn 散点图截断 Y 轴值
- spring - @OneToMany 列未显示?