检测jqGrid单元格中的复选框事件

我在学习javascriptjQuery过程中正在探索jqGrid ,我在一个网格单元checkbox中放置了一个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字段是否切换为“是”/“否”)? 我该如何实现这一目标?

首先,您不应该使用'cb'作为列的name ,因为它是保留列名 。 其他两个保留列名称是'subgrid''rn' 。 如果您不想遇到奇怪的问题,请使用任何其他名称。

您必须手动将click事件绑定到事件处理程序。 要做到这一点,你有一些选择。

您可以将click绑定到loadComplete回调内的所有复选框。 查看使用jQuery枚举所有复选框的答案 。 另一个答案显示了一种更有效的方法,它使用

DOM支持已经本机实现的rowscells集合的事实。 所以你可以通过loadComplete this.rows[iRow].cells[iCol]访问

另一种方法是使用自定义格式化程序而不是formatter: 'checkbox'并使用onclick属性进行绑定。

更新 :如果在网格中使用本地数据,则必须手动更新相应的值。 例如,请参阅答案 。 它描述了如何使用getLocalRow或使用jqGrid的data_index内部参数。

要获取用户单击的行的id ,您可以使用当前事件$(e.target).closest("tr.jqgrow").attr('id')