jqGrid не поддерживает Date
как собственный тип данных в операциях сравнения, поэтому в качестве обходного пути я предлагаю вам два способа.
1) Вы можете использовать sorttype
в качестве функции.В случае, если функция будет вызываться с параметром Date
, и функция может вернуть строку, которая может использоваться вместо Date в операциях сравнения.Например,
sorttype: function (d) {
if ($.isFunction(d.toISOString)) {
return d.toISOString();
}
return ISODateString(d);
// see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
function ISODateString(d) {
function pad(n) { return n < 10 ? '0' + n : n; }
return d.getUTCFullYear() + '-'
+ pad(d.getUTCMonth() + 1) + '-'
+ pad(d.getUTCDate()) + 'T'
+ pad(d.getUTCHours()) + ':'
+ pad(d.getUTCMinutes()) + ':'
+ pad(d.getUTCSeconds()) + 'Z'
}
}
2) Вы можете расширить функцию _compare , используемую внутри jqGrid для поддержки типа Date
.Вы можете использовать трюк, который я описал в моем этом старом ответе .В случае использования _compare
код будет
var oldFrom = $.jgrid.from;
$.jgrid.from = function (source, initalQuery) {
var result = oldFrom.call(this, source, initalQuery),
old_compare = result._compare;
result._compare = function (a, b, d) {
if (typeof a === "object" && typeof b === "object" &&
a instanceof Date && b instanceof Date) {
if (a < b) { return -d; }
if (a > b) { return d; }
return 0;
}
return _compare.call(this, a, b, d);
};
return result;
};
Вы можете вставить код перед использованием jqGrid, как я это продемонстрировал на демоверсии .
ОБНОВЛЕНО : я отправил запрос на извлечение , который решает проблему.