добавить пользовательский форматер для столбца флажка, если для параметра множественного выбора установлено значение true - PullRequest
1 голос
/ 03 апреля 2019

Я использую jqgrid как сетку со свойством multiselect: true. Я хочу снять флажок для некоторых строк на основе некоторого значения строки (отключить / не разрешать проверку). Я хочу добавить модуль форматирования в модель флажка, чтобы удалить флажок в этом столбце

Я пытался получить доступ к colModel внутри beforeProcessing, но пока не вижу имя столбца cb, автоматически добавленное jqgrid. следовательно, я не могу ввести interterter в colmodel для 'cb'.

jqGrid({
  multiselect: true,
  beforeSelectRow: function() {
     //called when tried to select one row.
     //its not called when selectAll is called.
  },
  onSelectAll: function(rowids, status) {
     //gets selected row ids when status is true
  }
})

1) Я хочу манипулировать выбором флажков на основе значения строки.

2) флажок не должен быть (видимым / выбираемым), если строка со столбцом isApplicable = false

jgrid версия: 5.3.0

1 Ответ

1 голос
/ 03 апреля 2019

Важно, чтобы вы всегда включали версию 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...