множественный выбор jqGrid - ограничить выбор строки только с помощью флажка - PullRequest
4 голосов
/ 02 октября 2011

Доброе утро, я работаю над jqGrid с активным множественным выбором.

Мне нужно ограничить выделение строки только с помощью многослойного поля, а не щелкать повсюду в строке. Это потому, что мне нужно выполнить какое-то действие, щелкнув ссылки в некоторых ячейках, и я не буду изменять активный множественный выбор. Я попытался установить свойство multiboxonly, но это не то, что мне нужно. Я не нашел ничего другого, чтобы настроить эту функцию сетки.

Ответы [ 3 ]

14 голосов
/ 03 октября 2011

Вы можете контролировать, по какому щелчку будет выбираться строка в соответствии с вашим пользовательским обработчиком событий beforeSelectRow .Если обработчик вернет true, будет выбрана строка.Если вы вернете false, строка не будет выделена.

Второй параметр beforeSelectRow - это объект события , e.target - элемент DOM, по которому щелкнули,Вы можете получить ячейку (<td>), в которой щелчок сделан с помощью $(e.target).closest('td').Затем вы можете использовать $. Jgrid.getCellIndex , чтобы получить индекс внутреннего значения ячейки строки.Индекс в colModel должен указывать на столбец «cb», который содержит флажки.Таким образом, код может быть следующим:

beforeSelectRow: function (rowid, e) {
    var $myGrid = $(this),
        i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
        cm = $myGrid.jqGrid('getGridParam', 'colModel');
    return (cm[i].name === 'cb');
}

Соответствующую демонстрацию вы можете увидеть здесь .

4 голосов
/ 14 марта 2014

Я хотел бы предложить более простое решение:

beforeSelectRow: function(rowid, e) { 
   return $(e.target).is('input[type=checkbox]');
},
3 голосов
/ 27 апреля 2015

Когда для multiselect установлено значение true, щелчок в любом месте строки выбирает эту строку;если для параметра multiboxonly также задано значение true, множественный выбор выполняется только при нажатии флажка.Таким образом, ответ будет:

multiboxonly: true
...