欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用js获取checkbox控件在GridView中的第几行

程序员文章站 2022-05-03 10:46:14
这次的知识点是如何使用js获取checkbox控件所在的是第几行!!! 我们可以使用 JavaScript 中自带的 rowIndex 和 cellIndex 来获取行和列的键值 (从0开始) 这两个一定要记好: var row_num = GV.rows[i].cells[0].children( ......

这次的知识点是如何使用js获取checkbox控件所在的是第几行!!!

我们可以使用 javascript 中自带的 rowindex 和 cellindex 来获取行和列的键值 (从0开始)

这两个一定要记好:

var row_num = gv.rows[i].cells[0].children(0).parentnode.parentnode.rowindex;

var col_num = target.parentnode.cellindex;

获取 parentnode (也就是 td),td.cellindex 就是所在列的键值

获取 parentnode.parentnode (也就是 tr),tr.rowindex 就是所在行的键值

在开发过程中,gridview绑定数据时需要在第一列绑定checkbox控件用来执行多选等复杂操作,然后可以在前台页面通过手动点击checkbox来使其checked属性变成true也就是选中状态,在后台循环时可以轻松获取到checkbox的checked值,但是由于一些业务需求可能不需要使用手动去点击,而是通过编写出js方法,若符合方法结果的则循环修改checkbox的checked属性变成true也就是选中状态,这时会发现在后台是获取不到checkbox的checked值。

在我遇到这个问题时也让我困扰了好久,明明在前台通过js方法已经将某些checkbox控件的checked值设置为true了,为什么在后台就是获取不到呢?

好了,我来说一下最后我是怎么解决的:

首先这个问题是在前台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 = "";
        }