Обнаружение события флажка в ячейке jqGrid - PullRequest
3 голосов
/ 11 марта 2012

Я изучаю jqGrid в своем пути изучения javascript и jQuery, и мне удалось поместить checkbox в ячейку сетки, потрясающе!

Вот что у меня есть:

$("#myTable").jqGrid({
  colModel:[
     name:'cb', index:'cb', width:40, sorttype:"text", align:"center",
     edittype:"checkbox", editoptions:{value:"Yes:No"}, formatter: "checkbox",
     formatoptions: {disabled : false}},
     other stuff...
  ]

Когда флажок установлен, как мне перехватить событие и определить соответствующие данные строки?

Кроме того, когда я нажимаю флажок, обновляются базовые данные на стороне клиента (поле cb переключает "Да" / "Нет")?Как мне этого добиться?

1 Ответ

2 голосов
/ 11 марта 2012

Прежде всего не следует использовать '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').

...