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"}); } }