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

时间:2012-03-10 22:00:31

标签: javascript jquery javascript-events jqgrid checkbox

我在学习jqGridjavascript的过程中探索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 个答案:

答案 0 :(得分:2)

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

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

您可以将click绑定到loadComplete回调内的所有复选框。请参阅the answer使用jQuery枚举所有复选框的位置。 Another answer显示了一种更有效的方式,它使用<table><tr><td>的DOM支持已经原生实施的rowscells这一事实集合。因此,您可以<td>内的this.rows[iRow].cells[iCol]访问loadComplete

另一种方法是使用custom formatter代替formatter: 'checkbox'并使用onclick属性进行绑定。

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

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