dojox.grid.dataGrid Пользовательский метод сортировки?
-
09-10-2019 - |
Вопрос
У меня есть 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 и иметь пользовательский файл для столбца таблицы?
Может кто-нибудь помочь?
Спасибо Джефф Портер
Решение
Я изменил JSON, чтобы пройти за длительное значение Datatime, а не строка даты отформатированной даты.
Затем я изменил 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"});
И это работает !!!
да!!
Другие советы
Лучшая практика с JSON - использовать даты ISO
2010-10-18T09:01:00
2010-10-18T09:03:00
2010-10-19T09:02:00
Это культурно нейтраль и сортирует должным образом, используя простые текстовые сортировки.
С Dojox.grid вы можете затем объявить Fixter, который переводит это на объект даты, затем генерирует культурно подходящее представление даты отображения.
Вы также можете дать сравнительный параметр для вашего хранить.
{fieldname: compareFunction}