Мне сложно понять, как программно изменить определение сортировки, которое отправляется на сервер, когда пользователь нажимает на столбец для его сортировки. Я добавил функцию onSortCol
в мою конфигурацию сетки. В этой функции мне нужно проверить, находится ли столбец «Id» в любом месте сортировки, отличном от последней позиции. Если это так, его следует удалить.Изменение столбцов сортировки в jqGrid
Вот что я пробовал:
onSortCol: function (index, iCol, sortOrder) {
var grid = $(this);
var rawSorts = index.split(",");
if (rawSorts.length > 1) {
var idFieldIndex = -1;
var processedSorts = [];
for (i = 0; i < rawSorts.length; i++) {
var currentSort = rawSorts[i].match(/[^ ]+/g);
if (idFieldIndex === -1 && currentSort[0].toUpperCase() === "ID") {
idFieldIndex = i;
}
processedSorts.push({
field: currentSort[0],
direction: currentSort[1] || sortOrder
})
}
if (idFieldIndex !== -1) {
processedSorts.splice(idFieldIndex, 1);
for (i = 0; i < processedSorts.length; i++) {
if (i + 1 < processedSorts.length) {
grid.sortGrid(processedSorts[i].field + " " + processedSorts[i].direction);
}
else {
grid.setGridParam("sortorder", processedSorts[i].direction);
grid.sortGrid(processedSorts[i].field + " ", true);
}
}
return "stop";
}
}
}
Пожалуйста, не могли бы вы объяснить более подробно, что вам нужно реализовать? Какой тип данных вы используете? Вы используете 'loadonce: true' или нет? Вы написали «как программно изменить определение сортировки, отправленное на сервер». Если вы используете сортировку на стороне сервера, и вам нужно просто изменить информацию, которая будет отправлена на сервер, вам нужно просто использовать 'serializeGridData' или' beforeRequest' для изменения данных, которые будут отправляться на сервер. – Oleg
В основном, что мне нужно сделать, это удалить сортировку по столбцу «Ид», если это последний столбец сортировки. У меня есть 'datatype: json' и' loadonce: false'. Причина, по которой я пытался реализовать это в 'onSortCol', используя встроенный метод сортировки, а не просто модифицировать почтовые данные, как вы предположили, заключается в том, что я предположил, что для этого подхода также потребуется удалить значок сортировки вручную. – grin0048
Итак, у вас есть столбец «Id» в сетке. Правильно ли это? И вы хотите отрицать сортировку по столбцу? Почему вы не просто включаете 'sortable: false' в определение столбца' Id' в 'colModel'. – Oleg