Прежде всего не следует использовать 'cb'
в качестве name
столбца, поскольку это зарезервированное имя столбца .Два других зарезервированных имени столбца - 'subgrid'
и 'rn'
.Просто используйте любое другое имя, если вы не хотите, чтобы возникали странные проблемы.
Вам необходимо вручную связать событие click
с обработчиком событий.Для этого у вас есть несколько вариантов.
Вы можете привязать click
ко всем флажкам внутри loadComplete
обратного вызова.См. ответ , где используются jQuery для перечисления всех флажков. Другой ответ показывает немного более эффективный способ, который использует тот факт, что DOM <table>
, <tr>
и <td>
поддерживает уже встроенные коллекции rows
и cells
.Таким образом, вы можете получить доступ к <td>
по this.rows[iRow].cells[iCol]
внутри loadComplete
.
Еще одним способом будет использование пользовательского форматера вместо formatter: 'checkbox'
и использование атрибута onclick
дляпереплет.
ОБНОВЛЕНО : Если вы используете локальные данные в сетке, вам необходимо обновить соответствующее значение вручную.См. ответ , например.Он описывает, как использовать getLocalRow
или использовать data
и _index
внутренние параметры jqGrid.
Чтобы получить id
строки, по которой щелкнул пользователь, вы можете использовать target текущего события $(e.target).closest("tr.jqgrow").attr('id')
.