验证Gridview CheckBox已检查多个网格视图

时间:2014-09-09 08:52:09

标签: c# javascript gridview

我想在同一页面上验证Gridview CheckBox已检查多个Gridviews

我尝试过以下但是没有用。

<script type="text/javascript">
    var TargetBaseControl = null;
    window.onload = function () {
        try {
            //get target base control.
            TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID%>', '<%= this.GridView2.ClientID%>');
        }
        catch (err) {
            TargetBaseControl = null;
        }
    }
    function TestCheckBox() {
        if (TargetBaseControl == null) return false;
        //get target child control.
        var TargetChildControl = "chkSelectAdd";
        //get all the control of the type INPUT in the base control.
        var Inputs = TargetBaseControl.getElementsByTagName("input");
        for (var n = 0; n < Inputs.length; ++n)
            if (Inputs[n].type == 'checkbox' &&
            Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 &&
            Inputs[n].checked)
                return true;
        alert('Select at least one checkbox!');
        return false;
    }
</script>

1 个答案:

答案 0 :(得分:0)

我可以在这里看到两个问题。 document.getElementById一次只支持一个元素,因此您的代码只会检查第一个GridView的复选框。此外,元素的ID应该是唯一的,因此您可以在此处检查ID:

Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 &&

只会在第一个复选框中返回true。

我建议删除TargetBaseControl的使用,而只是依赖于复选框的名称而不是ID:

var Inputs = document.getElementsByTagName("input");
    for (var n = 0; n < Inputs.length; ++n)
        if (Inputs[n].type == 'checkbox' &&
        Inputs[n].name.indexOf(TargetChildControl, 0) >= 0 &&
        Inputs[n].checked)
            return true;
...