dojox.grid.DataGrid自定义排序方法?

时间:2010-10-19 10:03:50

标签: dojo dojox.grid dojox.grid.datagrid

我有一个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字符串,并为表列设置自定义格式化程序?

有人可以帮忙吗?

由于 杰夫波特

3 个答案:

答案 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}