我有一个dojox.grid.DataGrid,其中一列有日期数据。 e.g。
09:01:00 18/10/2010
09:03:00 18/10/2010
09:02:00 19/10/2010
当我点击标题并对列进行排序时,我得到了这个......
09:01:00 18/10/2010
09:02:00 19/10/2010
09:03:00 18/10/2010
它已经对String值进行了排序,而不是将其作为日期值排序,因此第19个被错放了。
我想要一个自定义排序器方法,或者告诉网格它呈现的数据类型。
var rawdataDeltaInfo = '[{'timestamp':'15:27:45 18/10/2010'}]';
<table id="gridDeltas" jsId="gridDeltas" dojoType="dojox.grid.DataGrid" store="deltaInfo" clientSort="false" >
<thead>
<tr>
<th field="timestamp" >Create Date</th>
</tr>
</thead>
</table>
另一种方法是找到将日期编码为JSON字符串,并为表列设置自定义格式化程序?
有人可以帮忙吗?
由于 杰夫波特
答案 0 :(得分:3)
我已将JSON更改为传递dataTime long值,而不是格式化日期String。
然后我将dojox.grid.DataGrid更改为日期列的自定义格式化程序。
dojo.require("dojo.date.locale");
formattedString = dojo.date.locale.format(new Date(jsonLongDate), {datePattern: "HH:mm:ss dd/MM/yyyy", selector: "date"});
它有效!!!
酵母!!
答案 1 :(得分:1)
使用JSON的最佳做法是使用ISO日期
2010-10-18T09:01:00
2010-10-18T09:03:00
2010-10-19T09:02:00
它具有文化中立性,使用纯文本排序可以正确排序。
使用dojox.grid,您可以声明一个格式化程序,将其转换为Date对象,然后生成一个文化上适当的日期显示表示。
答案 2 :(得分:0)
您还可以为store提供comparatorMap参数。
{fieldname: compareFunction}