2015-05-07 3 views
0

У меня есть столбец в моем jqGrid, который в настоящее время показывает дату в формате «d/m/y». Он форматируется из строки даты и времени формата «Y-m-d H: i: s» и сортируется только по дате. Ток colModel, как следующее:jqGrid Сортировка по дате и времени, но отображение только даты

{name: 'published_date', index: 'published_date', formatter: 'date', formatoptions: {newformat: 'd/m/y'}} 

свойство sortname устанавливается в «published_date».

Так что это нормально работает. То, что я пытаюсь сделать сейчас, сортируется как с датой , так и с, потому что некоторые из строк, попадающих на ту же дату, выглядят в случайном порядке. Я все еще хочу поддерживать формат отображения «d/m/y», но просто сортирую его с исходной датой/временем, от которого он был отформатирован.

Я пробовал некоторые предложения, которые я нашел, но никто из них не работал для меня. Например, кто-то предложил преобразовать дату в целое число и попытаться отсортировать ее, а затем отформатировать как «d/m/y». Также не похоже, что это поле сортировки для datetime, которое работает.

{name: 'published_date', index: 'published_date', sorttype: 'datetime', formatter: 'date', formatoptions: {newformat: 'd/m/y', srcformat: 'Y-m-d H:i:s'}} 

Если нет никаких встроенных механизмов в jqGrid, чтобы справиться с этим, то, что вы могли бы предложить для настраиваемого решения?

Использование jqGrid 4.7.0, тип данных JSON и пример данных с сервера для published_date является «2015-03-04 18:38:12»

+0

какая версия jqGrid/бесплатная jqGrid/Guriddo jqGrid JS вы используете? Какой тип данных вы используете? 'sorttype' работает только с * локальными * данными или данными, загруженными с сервера, с дополнительной опцией' loadonce: true'. В каком точном формате есть данные? Не могли бы вы предоставить текстовые данные для 'published_date', которые вы используете. – Oleg

+0

@Oleg Спасибо за ваш вклад. См. Правки выше. –

+0

Вы используете 'datatype:" json "' ** без ** 'loadonce: true'? В случае, если jqGrid не сортируется вообще, и 'sorttype' будет проигнорирован. Вместо этого jqGrid отправляет новый запрос на сервер с новым значением 'sidx' и' sord'. ** Сервер должен вернуть страницу отсортированных данных **. – Oleg

ответ

2

Опция sorttype будет использоваться jqGrid только при локальной сортировке. Если вы используете datatype: "json" без loadonce: true, тогда jqGrid просто отображает одну страницу данных, отсортированную на стороне сервера. Если пользователь нажимает кнопку новой страницы или заголовок столбца для сортировки столбца, тогда jqGrid отправит новый запрос на сервер с новыми параметрами page, sidx и sord. Таким образом, сервер будет отвечать за правильную сортировку данных и вернуть запрошенную страницу отсортированных данных.

Я рекомендую в целом предпочесть использовать loadonce: true в случае отображения такого большого массива данных (например, менее 1000 строк данных). Сервер должен игнорировать параметры page и rows и вернуть все данные Назад к jqGrid. Сначала нужно просто отсортировать данные. После первой загрузки данные jqGrid сохранили данные в data и _index параметрах jqGrid и изменили datatype на "local". Поздняя сортировка, подкачка или фильтрация/поиск данных будут реализованы jqGrid без какой-либо связи с сервером. Следует четко понимать, что JavaScript-код относительно быстро используется в современных веб-браузерах. Из-за этого пользователь очень быстро увидит результаты сортировки, пейджинга или фильтрации (практически сразу в случае небольшого количества данных). Время роутинга простейшего запроса на сервер обычно намного дольше.

Смежные вопросы