Важно, чтобы вы всегда включали версию jqGrid, которую вы используете (можете использовать) в текст вашего вопроса.Важно также знать форк jqGrid ( бесплатный jqGrid , коммерческий Guriddo jqGrid или старый jqGrid в версии <= 4.7). </p>
Свободный форк jqGrid, который я разрабатываю, содержит несколько опций / обратных вызовов, которые можно использовать для реализации ваших требований.
Прежде всего вы можете использовать обратный вызов hasMultiselectCheckBox
, чтобы сообщить jqGrid, в каких строках (на основе содержимогоиз столбца isApplicable
, например) должен быть установлен флажок множественного выбора:
hasMultiselectCheckBox: : function (options) {
// options is object like below
// { rowid: rowid, iRow: irow, iCol: pos, data: item, checked: checked };
// one can use options.data to examine the data of the current row
return options.data != null && options.data.isApplicable;
}
Даже если флажок не существует в строке, все равно можно выбрать строку, нажав на строку.(Кстати, вы можете использовать multiselectPosition: "none"
, чтобы вообще не иметь столбца с множественными флажками.) Таким образом, вы должны дополнительно добавить обратный вызов beforeSelectRow
, который предотвращает выбор строк, имеющих isApplicable
, равных false
:
beforeSelectRow: function (rowid) {
var item = $(this).jqGrid("getLocalRow", rowid);
if (item != null && !item.isApplicable) {
return true;
}
return false;
},
в качестве альтернативы, если вы используете одну из последних версий бесплатного jqGrid, вы можете использовать rowattr
, чтобы добавить "jqgskipselect"
класс к строкам, которые не должны выбираться:
rowattr: function (item) {
if (!item.isApplicable) {
return { "class": "jqgskipselect" };
}
},
бесплатный jqGrid предотвращает выбор строк, которые имеют класс.В старых версиях вы можете использовать отключенный класс для предотвращения выбора.Это "ui-state-disabled"
класс в случае использования jQuery UI CSS или "disabled"
класс в случае использования Bootstrap CSS.