此次的知识点是如何使用js获取checkbox控件所在的是第几行!!!this
咱们能够使用 JavaScript 中自带的 rowIndex 和 cellIndex 来获取行和列的键值 (从0开始)spa
这两个必定要记好:code
var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;server
var
col_num = target.parentNode.cellIndex;
ip
获取 parentNode (也就是 td),td.cellIndex 就是所在列的键值开发
获取 parentNode.parentNode (也就是 tr),tr.rowIndex 就是所在行的键值get
在开发过程当中,GridView绑定数据时须要在第一列绑定checkbox控件用来执行多选等复杂操做,而后能够在前台页面经过手动点击checkbox来使其checked属性变成true也就是选中状态,在后台循环时能够轻松获取到checkbox的checked值,可是因为一些业务需求可能不须要使用手动去点击,而是经过编写出js方法,若符合方法结果的则循环修改checkbox的checked属性变成true也就是选中状态,这时会发如今后台是获取不到checkbox的checked值。input
在我遇到这个问题时也让我困扰了很久,明明在前台经过js方法已经将某些checkbox控件的checked值设置为true了,为何在后台就是获取不到呢?class
好了,我来讲一下最后我是怎么解决的:后台
首先这个问题是在前台js中能够获取到checkbox的checked的值,可是在后台循环时获取不到。
先设置一个隐藏控件:
<input type="hidden" id="row_num" runat="server" />
在前台先经过循环判断被选中的checkbox
if (GV.rows[i].cells[0].children(0).checked) {
var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;
document.getElementById("row_num").value = row_num;
}
而后经过 var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;来获取到在GridView中第几行的CheckBoex的行数,而后赋值到一个隐藏控件上去,这样在后台就能够获取到这个隐藏控件上面的值了,而后经过在Rows[]里面将取得的数减1就是在前台被选中的checkbox的行数,最后将它设置为True就OK了。
if (this.row_num.Value != "") { int j = Convert.ToInt32(this.row_num.Value); (this.GridView1.Rows[j - 1].Cells[0].FindControl("CKB_data") as CheckBox).Checked = true; this.row_num.Value = ""; }