2

我有一个 dojox.grid.DataGrid,其中一列中有日期数据。例如

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

它已对字符串值进行排序,而不是将其排序为日期值,因此第 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 字符串,并为表格列提供自定义格式化程序?

任何人都可以帮忙吗?

谢谢杰夫波特

4

3 回答 3

3

我已更改 JSON 以传递 dataTime long 值,而不是格式化的日期字符串。

然后,我将 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"});

它有效!

是的!!

于 2010-10-19T10:36:15.513 回答
1

JSON 的最佳实践是使用 ISO 日期

2010-10-18T09:01:00
2010-10-18T09:03:00
2010-10-19T09:02:00

它在文化上是中立的,并且使用纯文本排序正确排序。

使用 dojox.grid,您可以声明一个将其转换为 Date 对象的格式化程序,然后生成适合显示文化的日期表示。

于 2010-10-26T00:12:01.843 回答
0

您还可以为您的store提供 compareMap 参数。

{fieldname: compareFunction} 
于 2010-11-09T15:26:58.880 回答