【问题标题】:How to check whether the check box inside Gridview Template is Selected or not with Javascript?如何使用Javascript检查Gridview模板内的复选框是否被选中?
【发布时间】:2013-07-02 01:49:43
【问题描述】:

我有一个网格视图,其中包含一个模板字段复选框,用于选择每一行的数据。在这里他们可以从网格中选择成员。

 <asp:GridView ID="dgMembers2" runat="server" AllowPaging="True" AllowSorting="True">
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkBxHeader" onclick="javascript:HeaderClick(this);" runat="server"
                                Text="Select All" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    </Gridview>

因此,当他们选择成员并单击添加时,然后将其插入数据库,但如果他们没有从网格中选择任何复选框,我将无法显示任何错误消息。任何人都可以建议我如何使用 Javascript 检查他们是否至少检查了一个复选框,然后我想显示

Javascript Alert

我尝试了很多,但我的字段是模板字段,所以我不知道如何使用它。

任何建议都会被重视。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    添加asp.net CustomValidator控件,并设置js函数

    HTML 标记:

    <asp:CheckBox ID="CheckBox1" runat="server" cssClass="chkd" />
    
    <asp:CustomValidator runat="server" ID="validcontrol" EnableClientScript="true"
    ClientValidationFunction="validchkbox">required.</asp:CustomValidator>
    

    JavaScript 函数:

    function validchkbox(sender, e)
    {
        e.IsValid = $(".chkd input:checkbox").is(':checked');
    }
    

    背后的代码:

    if (Page.IsValid)
    {
        //  Logic Code here...
    }
    

    Jquery 让开发人员的生活更轻松:

       if ($('.chkd').is(':checked')){
            alert("Heloo Welcome..");
        } 
       else {
              alert("Please select the checkbox.");
            }
    

    DEMO JS FIDDLE

    注意:这里chkd是你的复选框类名

    【讨论】:

      【解决方案2】:

      让你的 gridview id 是 gv_test

      function checkChecked() {
          var count = 0;
          $("#gv_test").find(":checkbox").each(function (i) {
              if ($(this).is(":checked")) {
                  count++;
              }
          });
          if (count == 0) {
              alert('your error message');
          }
      }
      

      希望这会奏效。谢谢。

      【讨论】:

        【解决方案3】:

        也许您可以尝试将此javascript函数添加到ADD按钮的onClientClick属性中。

                    function tryThis() {
                var rowscount = document.getElementById('<%=yourGridViewID.ClientID%>').rows.length;
                var chkTest = 0;
                for (var i = 0; i < rowscount-1; i++) {
                    var chkName = "yourGridViewID_yourCheckBoxID_" + i;
                    var chkChecked = document.getElementById(chkName).checked;
                    if (chkChecked == true) {
                        chkTest = 1;
                        break;
                    }
                }
                if (chkTest == 0) {
                    alert('Nothing Checked');
                }
                else {
                    alert('Something Checked');
                }
            }
        

        希望这会有所帮助。

        参考资料:

        How do I get if a checkbox is checked or not?

        ASP.NET GridView row count using Javascript

        【讨论】:

          【解决方案4】:

          使用下面的代码进行全选/取消全选

          function HeaderClick(CheckBox, gdvClientId) {
          
          var TargetBaseControl =     document.getElementById(gdvClientId);
                      var TargetChildControl = 'chkOrder';
          
          
                      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 = CheckBox.checked;
          
                  }
          

          像这样从你的 headertemplate 调用函数 HeaderClick(CheckBox, gdvClientId),gdvClientId 是你的 Gridview ID

          【讨论】:

          • 感谢您的回复..实际上我已经有检查/取消检查功能,但是当用户忘记检查并单击按钮时我想暗示,然后将向他们显示一个警报“请至少选择一个复选框”..
          • 您可以在条件中添加计数器 if (Inputs[n].type == 'checkbox' && Inputs[n].id.indexOf(TargetChildControl, 0) >= 0) Inputs[n] .checked = CheckBox.checked;检查是否选中了任何复选框。
          • 我在您的代码的帮助下尝试过:但什么也没发生……我有什么遗漏吗?
          • function HeaderClick(CheckBox, gdvClientId) { var TargetBaseControl = document.getElementById(gdvClientId); var TargetChildControl = 'chkOrder'; var Inputs = TargetBaseControl.getElementsByTagName('input'); var counter=0 for (var n = 0; n = 0) 计数器++; } if(counter==0){ alert("请至少选择一个");返回假; }
          猜你喜欢
          • 1970-01-01
          • 2013-02-15
          • 2014-02-07
          • 2019-01-12
          相关资源
          最近更新 更多