библиотеку.сетка.Метод пользовательской сортировки DataGrid?


У меня библиотеку.сетка.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, и есть пользовательский форматер для столбца таблицы?

Может ли кто-нибудь помочь?

Спасибо Джефф Портер

3 2

3 ответа:

Я изменил JSON, чтобы передать длинное значение dataTime, а не отформатированную строку даты.

Затем я изменил библиотеку.сетка.DataGrid, чтобы иметь пользовательский форматер для столбца даты.

dojo.require("dojo.date.locale");
formattedString = dojo.date.locale.format(new Date(jsonLongDate), {datePattern: "HH:mm:ss dd/MM/yyyy", selector: "date"});

И это работает!!!

Да!!

Наилучшей практикой в JSON является использование ISO-дат

2010-10-18T09:01:00
2010-10-18T09:03:00
2010-10-19T09:02:00
Он культурно нейтрален и правильно сортирует, используя обычную сортировку текста.

В библиотеку.затем можно объявить форматер, который преобразует его в объект даты, а затем генерирует культурно приемлемое представление даты для отображения.

Вы можете также дать comparatorMap параметр для магазина.

{fieldname: compareFunction}