JqGrid не правильно сортирует даты
У меня проблема при сортировке дат с помощью jqGrid. Учитывая следующие даты
jqGrid сортирует мои даты следующим образом
01/01/2010
01/01/2011
01/02/2010
01/02/2011
Я бы ожидал увидеть
01/01/2010
01/02/2010
01/01/2011
01/02/2011
Мой формат даты - dd/mm/yyyy, и у меня есть следующие параметры формата -
{ name:'myDate', index: 'myDate', sortable: true, sorttype: 'date' }
Я что-то пропустил или это ограничение jqGrid?
Ответы
Ответ 1
Вы сделали типичную ошибку. Проблема в том, что jqGrid ожидает ввода дат в формате даты ISO 8601: Y-m-d.
Если вы публикуете входные данные jqGrid в формате "dd/mm/yyyy", вы должны добавить datefmt: 'm/d/Y'
свойство в определение столбца.
Лучшим способом было бы заполнить данные даты сетки в формате ISO и преобразовать вход в любой другой формат только для отображения даты в jqGrid, используя следующие настройки
formatter:'date', formatoptions: {newformat:'m/d/Y'}, datefmt: 'd-M-Y'
Сравните исходный код древо дерева: this, this и this.
Ответ 2
jqGrid не поддерживает сортировку по дате, но по дате.
На самом деле, я обнаружил, что jqGrid поддерживает сортировку по датам.
У нас есть веб-сервис JSON, где даты (досадно) прибывают в этом формате:
'2/24/2015 9:48:04 AM'
jqGrid отлично сортировал по дате и времени, используя это:
colModel: [
{ name: "dt", sorttype: 'date', datefmt: 'm/d/yyyy h:i:s AmPm' },
![jqGrid_Sorting]()
В этом конкретном приложении использовалось jqGrid 4.4.5 (с 2008 года), поэтому это не новая функция.
Надеюсь, что это поможет.
Ответ 3
jqGrid не поддерживает сортировку по дате, но по дате. Следовательно, вы можете использовать альтернативу, как указано в ее PDF-документе, показанном ниже. Если ваши данные в сетке уже отсортированы по дате и времени, и у вас также есть столбец с индексом всех строк, например, в числах 1, 2, 3,.... n. Вы можете сортировать дату и время в индексной колонке. Это всегда будет обеспечивать порядок asc или desc для даты и времени.
Вы можете сортировать дату и время jqGrid другим контентом. Например, приведенный в примере ниже на onSortCOl:
onSortCol: function(name,index) { if(name == 'createDateTime') { jQuery("#viewNotesGrid").setGridParam({sortname:"ID"}); } }