我想按日期时间值排序,并按日期字符串分组。
我在石斑鱼上找到了sortProperty
:
如果希望对
groupFn
返回的组字符串以外的其他内容进行排序,则可以设置此配置。这与普通property
上的Ext.util.Sorter
具有相同的作用。
所以我尝试了以下内容,只对日期进行了正确排序:
grouper:{
sortProperty: 'StartDate',
property: 'StartDateOnly',
direction: 'ASC'
},
我尝试了以下方法,只对时间进行了正确排序:
grouper:{
sortProperty: 'StartDate',
property: 'StartDateOnly',
direction: 'ASC'
},
sorters: [{
property: 'StartDate',
direction: 'ASC'
}]
你可以在这里试试:
https://fiddle.sencha.com/#view/editor&fiddle/2cei
我在这里做错了什么?
答案 0 :(得分:1)
问题是您对string
类型进行了排序,但是您通过更改您的sencha小提琴上的代码date
,如下所示:
Ext.application({
name : 'Fiddle',
launch : function() {
var mdl = Ext.define('', {
extend: 'Ext.data.Model',
fields: [{
/** @field {date} StartDate with format: Y-m-d H:i */
name: 'StartDate',
type: 'date',
dateFormat: 'Y-m-d H:i'
},{
name: 'StartDateOnly',
type: 'date', // <= here before it was 'string'
convert: function(v,rec) {
return Ext.Date.format(rec.get('StartDate'), 'D d.m.Y');
}
}]
});
...
然后您运行,您可以看到日期StartDateOnly
组现在按ASC
排序。
之后,您可以date
格式检索此数据并将其转换为string
。
但是如果你在string
进行排序,那么你将永远像现在这样在2月1日
问题是它在一周的日子里按字母顺序排序。
按顺序:星期五,星期六,星期四。
答案 1 :(得分:1)
Sencha支持没有提供完整的解决方案,但在我的路上帮助了我一点。他们找到了如何“修复”手头的问题,并告诉我将StartDateOnly列的数据类型更改为date
,但这个修复程序都没有被证明是普遍的,也没有任何意义解决了这个问题。 。但它显示了一些潜在的相关性,这有助于我深入研究问题并找到一个通用的解决方案。
我想说这个问题是ExtJS中的一个错误,但我正在等待Sencha对此的确认。我必须找到引入错误的确切行。
问题描述:
当在石斑鱼上设置sortProperty并且在商店中添加至少一个分拣机时,石斑鱼的“变换”功能被设置为第一个分拣机的“变换”功能(否则,它为空)。 / p>
解决方案:
您可以通过向grouper配置明确添加正确的排序类型来手动覆盖石斑鱼上的transform
函数:
grouper:{
sortProperty: 'StartDate',
property: 'StartDateOnly',
transform: Ext.data.SortTypes.asDate,
direction: 'ASC'
},