Мы решили эту же проблему с подсетями, и решение может быть адаптировано к сценарию группировки.Мы использовали пользовательские средства форматирования , чтобы добавить стили и атрибуты данных как для ссылки / флажка заголовка, так и для флажка подсетки.Затем у нас есть ссылка или флажок в строке заголовка с событием, которое использует jQuery, чтобы выбрать все флажки в подсетке с соответствующим атрибутом данных и стилем.Наконец, событие завершения загрузки сетки добавляет обработчик события щелчка для ссылки «проверить все».
Вот пример настраиваемого средства форматирования для столбца флажка подсетки.Обратите внимание на атрибут data-groupingId, в котором хранится значение, которое используется для связи строки заголовка со строками подсетки.
function checkBoxColumnFormatter(cellvalue, options, rowObject) {
return "<input type=\"checkbox\"" + data-groupingId=\"" + rowObject.GroupingId + "\" class=\"subgridCheck\" />";
}
Вот пример пользовательского средства форматирования для столбца «проверить все».Обратите внимание на атрибут data-groupingId, который хранит значение, которое используется для связи строки заголовка со строками подсетки.
function checkAllColumnFormatter(cellValue, options, rowObject) {
var link = $("<a class=\"checkAll\" href=\"#\" data-groupingId=\"" + rowObject.Id + "\">Check All</a>");
var linkHtml = $("<div>").append(link.clone()).remove().html();
return linkHtml;
}
Вот событие завершения загрузки, которое подключает события щелчка для ссылок «проверить все»созданный в вышеуказанном форматере.
function mainGridLoadComplete(data) {
$(".checkAll").click(function (e) {
checkSubGridRows(
$(this).attr("data-groupingId")); // Use the data attribute to specify the value that will be on all the *relevant* subgrid checkboxes.
});
},
И, наконец, вот метод, который делает эту работу.
function checkSubGridRows(groupingId) {
$("#GridId .subgridCheck[data-groupingId=\"" + groupingId + "\"]").not(":disabled").each(
function () {
$(this).attr("checked", "checked");
});
}
Это очень хорошо сработало для нас.С учетом всего сказанного, когда все становится таким сложным, я предпочел бы иметь модель на стороне клиента для получения данных из веб-службы JSON и быть авторитетным источником для jqGrid.Я думаю, что в конечном итоге было бы предпочтительнее иметь jqGrid для захвата самих данных и проглатывания реальных объектов данных, что затрудняет или делает невозможным получение данных непосредственно для ссылки или обработки.Однако создание и управление разделением модели / представления на стороне клиента не является тривиальной задачей.Так что это работает как быстрая альтернатива.Но будьте осторожны, потому что это может выйти из-под контроля БЫСТРО.