Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript函数从gridview启用/禁用行方式中的复选框?_Javascript_Asp.net_Gridview_Checkbox - Fatal编程技术网

如何使用javascript函数从gridview启用/禁用行方式中的复选框?

如何使用javascript函数从gridview启用/禁用行方式中的复选框?,javascript,asp.net,gridview,checkbox,Javascript,Asp.net,Gridview,Checkbox,我想用一些条件在行中选中复选框 第一个条件是,当在同一行中连续选中三个复选框时,它应显示警报弹出窗口(“您不能选择连续三小时”) 下一个条件是,它不应该在每行中选择超过三个复选框 我使用了下面的java脚本,在这段代码中,它是按列方式签入的,但我想按行方式签入 我怎样才能达到这个条件 function CheckCheck() { var chkBox = document.getElementById('<%=Gv1.ClientID %>');

我想用一些条件在行中选中复选框

  • 第一个条件是,当在同一行中连续选中三个复选框时,它应显示警报弹出窗口(“您不能选择连续三小时”)

  • 下一个条件是,它不应该在每行中选择超过三个复选框

我使用了下面的java脚本,在这段代码中,它是按列方式签入的,但我想按行方式签入

我怎样才能达到这个条件

    function CheckCheck() {
        var chkBox = document.getElementById('<%=Gv1.ClientID %>');
        var chkBoxCount = chkBox.getElementsByTagName("input");

        var btn = document.getElementById('<%=btnsubmit.ClientID %>');
        var i = 0;
        var tot = 0;
        for (i = 0; i < chkBoxCount.length; i++) {
            if (chkBoxCount[i].checked) {
                tot = tot + 1;

                if (tot > 2) {
                    alert('Cannot check more than 2 check boxes');
                    chkBoxCount[i].checked = false;
                    return;
                }
            }
        }
    }
函数检查(){
var chkBox=document.getElementById(“”);
var chkBoxCount=chkBox.getElementsByTagName(“输入”);
var btn=document.getElementById(“”);
var i=0;
var-tot=0;
对于(i=0;i2){
警报(“不能选中超过2个复选框”);
chkBoxCount[i]。选中=false;
回来
}
}
}
}
HTML:


您可以在gridview中获取
(行)的集合,并在其中循环,查找每行中的复选框。我会将您的变量chkBox重命名为grid,因为您得到的是gridView而不是复选框:

var grid = document.getElementById('<%=Gv1.ClientID %>');
var gridRows = grid.getElementsByTagName("tr");
for (rowIndex = 0; rowIndex < gridRows.length; rowIndex++) {
    var row = gridRows(rowIndex);
    var chkBoxCount = row.getElementsByTagName("input");

    for (i = 0; i < chkBoxCount.length; i++) {
        if (chkBoxCount[i].checked) {
            tot = tot + 1;

            if (tot > 2) {
                alert('Cannot check more than 2 check boxes');
                chkBoxCount[i].checked = false;
                return;
            }
        }
    }
}
var grid=document.getElementById(“”);
var gridRows=grid.getElementsByTagName(“tr”);
对于(rowIndex=0;rowIndex2){
警报(“不能选中超过2个复选框”);
chkBoxCount[i]。选中=false;
回来
}
}
}
}

如何从您在上述代码中使用的网格中获取标记名?您的意思是“从网格中获取标记名”?如果您查看html源代码,您将看到ASP.NET将GridView呈现为html表。在上面的代码(“var gridRows=grid.getElementsByTagName(“tr”);”)中,您使用了标记名“tr”。“tr”是什么?当您使用像GridView这样的ASP.NET控件时,它被称为服务器端控件。服务器处理它并发出浏览器可以理解的标准html标记,如和(表行)。要查看此信息,请在浏览器中运行页面,右键单击页面,然后选择“查看源”或“查看页面源”。这将打开浏览器从服务器接收的html。您将看不到标记,但您将看到它的位置。表的每一行都是一个标记,表的每个单元格都是(表定义)。是的,谢谢我检查了它,我明白了,但是当我在上面的代码中使用“tr”时,它不起作用。
var grid = document.getElementById('<%=Gv1.ClientID %>');
var gridRows = grid.getElementsByTagName("tr");
for (rowIndex = 0; rowIndex < gridRows.length; rowIndex++) {
    var row = gridRows(rowIndex);
    var chkBoxCount = row.getElementsByTagName("input");

    for (i = 0; i < chkBoxCount.length; i++) {
        if (chkBoxCount[i].checked) {
            tot = tot + 1;

            if (tot > 2) {
                alert('Cannot check more than 2 check boxes');
                chkBoxCount[i].checked = false;
                return;
            }
        }
    }
}