jqGrid: сортировка на стороне клиента не работает с датами! - PullRequest
1 голос
/ 16 февраля 2011

У меня есть столбец даты в jqGrid с colOption для этого столбца, определенного как:

{name:'LTD', index:'LTD', width:110, align:'right', sortable:true, sorttype:'date', formatoptions:{srcformat:'Ymd', newformat:'d/m/Y'}, formatter: 'date'},

Данные JSON, возвращаемые с сервера, имеют в поле «20101231» и т. Д., И они отображаются правильно (то есть отображаются как «31/12/2010»). Однако щелчок в заголовке столбца для его сортировки ничего не дает!

Единственный способ заставить работу сортировки - не изменять srcformat (то есть принять значение по умолчанию 'Y-m-d'). Однако он не работает с любым другим пользовательским форматом.

Дополнительная проблема связана с поиском в этом столбце. Независимо от того, как я указываю значение во всплывающем окне поиска (с оператором равенства как), он не находит запись !!

jQuery : 1.4.4
jqGrid:  3.8.2

В чем может быть причина?

1 Ответ

2 голосов
/ 17 февраля 2011

Параметр формата, в котором srcformat или newformat имеет формат 'Ymd', не поддерживается 'date'. Если должна быть строка, которая содержит разделители между «Y», «m» и «d». Поэтому я настоятельно рекомендую вам изменить код сервера для создания даты в формате даты ISO 8601 'Y-m-d'.

Если вы не можете изменить код сервера, вам придется использовать пользовательский форматер , чтобы иметь возможность отображать дату в новом формате: 'd / m / Y'. Следующие параметры для столбца даты можно использовать вместо formatoptions:{srcformat:'Ymd', newformat:'d/m/Y'}, formatter: 'date':

sorttype: 'date', datefmt:'d/m/Y',
formatter: function (cellvalue, options, rowObject) {
    var y = Number(cellvalue.substring(0,4));
    var m = Number(cellvalue.substring(4,6));
    var d = Number(cellvalue.substring(6,8));
    return String(d)+'/'+String(m)+'/'+String(y);
}

Вы сможете отображать и выполнять локальную сортировку данных, но для поиска данных вам придется использовать исходный формат "20101016", если вы хотите найти дату, которая будет отображаться как "16/10 / 2010" . Смотрите маленькую демонстрацию здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...