библиотеку.сетка.Метод пользовательской сортировки 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 ответа:
Я изменил 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}