Первая часть ответа содержит ответ на ваш вопрос. Немного улучшенную версию демо вы можете найти здесь .
Если вам не нужно сортировать по столбцу «multiselect» , демоверсия делает то, что вам нужно. Несколько небольших замечаний по поводу демонстрации. Флажок над столбцом «множественный выбор» выбирает / отменяет выбор всех строк только на текущей странице. Если вы хотите другое поведение, код будет еще проще. Я включил в демонстрационный выбор 3 предмета напрямую, загрузив сетку. Два элемента будут выбраны на первой странице и один элемент на второй странице. В некоторых ситуациях поведение может быть интересным. Если вам это не нужно, просто прокомментируйте строку idsOfSelectedRows = ["8", "9", "10"];
Ниже вы найдете самые важные части кода демо
var $grid = $("#list"), idsOfSelectedRows = [],
updateIdsOfSelectedRows = function (id, isSelected) {
var index = $.inArray(id, idsOfSelectedRows);
if (!isSelected && index >= 0) {
idsOfSelectedRows.splice(index, 1); // remove id from the list
} else if (index < 0) {
idsOfSelectedRows.push(id);
}
};
// initialize selection
idsOfSelectedRows = ["8", "9", "10"];
$grid.jqGrid({
datatype: 'local',
// ... other parameters
multiselect: true,
onSelectRow: updateIdsOfSelectedRows,
onSelectAll: function (aRowids, isSelected) {
var i, count, id;
for (i = 0, count = aRowids.length; i < count; i++) {
id = aRowids[i];
updateIdsOfSelectedRows(id, isSelected);
}
},
loadComplete: function () {
var $this = $(this), i, count;
for (i = 0, count = idsOfSelectedRows.length; i < count; i++) {
$this.jqGrid('setSelection', idsOfSelectedRows[i], false);
}
}
});
Если вы хотите, вы можете считать idsOfSelectedRows
дополнительным параметром jqGrid. В настоящее время нет проверки параметров jqGrid, и вы можете расширить их. Преимуществом будет постоянство idsOfSelectedRows
вместе с соответствующим jqGrid.
ОБНОВЛЕНО: Свободный jqGrid Форк jqGrid поддерживает опцию multiPageSelection: true
, которую можно комбинировать с опцией multiselect: true
. Это позволяет хранить параметр selarrrow
(список идентификаторов выбранных строк) на многих страницах. По умолчанию jqGrid сбрасывает массив selarrrow
во время подкачки, но в случае использования multiPageSelection: true, multiselect: true
это не так, сбрасывает. Более того, он предварительно выбирает все строки из массива selarrrow
при построении страницы. Таким образом, если заполнить массив selarrrow
всеми значениями строк элементов (все строки на всех страницах), то строки будут отображаться выбранными. Пользователь по-прежнему может отменить выбор некоторых строк, и jqGrid не изменит сделанные пользователем изменения.
Демоверсия , созданная для ответа , показывает использование multiPageSelection: true
в бесплатной jqGrid. Другой ответ кратко описывает другие новые опции бесплатной jqGrid: multiselectPosition: "right"
, которая позволяет переместить столбец множественных флажков вправо, multiselectPosition: "none"
, что позволяет использовать функциональность множественного выбора без какого-либо столбца множественного выбора, и hasMultiselectCheckBox
обратный вызов, который можно использовать для создания множественных флажков не во всех строках jqGrid.