【问题标题】:Validate Gridview CheckBox Checked for Multiple Gridviews验证 Gridview CheckBox 检查了多个 Gridview
【发布时间】:2014-09-09 08:52:08
【问题描述】:

我想验证GridviewCheckBox 在同一页面上检查了多个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>

【问题讨论】:

    标签: c# javascript gridview


    【解决方案1】:

    我可以在这里看到两个问题。 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;
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多