我在学习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字段是否切换为“是”/“否”)?我如何实现这一目标?
答案 0 :(得分:2)
首先,您不应将'cb'
用作列的name
,因为它是保留列名称。其他两个保留列名称为'subgrid'
和'rn'
。如果您不想遇到奇怪的问题,请使用任何其他名称。
您必须手动将click
事件绑定到事件处理程序。要做到这一点,你有一些选择。
您可以将click
绑定到loadComplete
回调内的所有复选框。请参阅the answer使用jQuery枚举所有复选框的位置。 Another answer显示了一种更有效的方式,它使用<table>
,<tr>
和<td>
的DOM支持已经原生实施的rows
和cells
这一事实集合。因此,您可以<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}}。