asp.net - 使用 JQuery 在 GridView ASP.NET 中选择所有复选框

标签 asp.net javascript jquery jquery-selectors

我的 Gridview 模板列中有复选框,称为“类别 A”和“类别 B”。 我想要全选功能,即当用户选中类别 A 列中的全选复选框时,必须选中该列下的所有复选框。 B类同理。 我正在尝试使用下面的代码。我的代码的问题是,它选中了整个 gridview 中的所有复选框,“类别 A”以及“类别 B”的复选框。 但是,我只想选中同一列下的复选框。

 function SelectAllCheckboxesA(chk) {
                $('#<%=gvSurveys.ClientID %>').find("input:checkbox").each(function() {
                    if (this != chk) {
                        if ($(this).hasClass('CatA') != false) {
                            this.checked = chk.checked;
                        }
                    }
                    else {
                        alert($(this));
                    }
                });
            }




 <asp:GridView ID="gvSurveys" runat="server" AutoGenerateColumns="false" AllowSorting="True" Width="1500px">
                           <Columns>
                              <asp:TemplateField>
                                 <HeaderTemplate>Category A
    <asp:CheckBox ID="chkSelectAllCatA" runat="server" Visible="false" onclick="javascript:SelectAllCheckboxesA(this);" CssClass="SACatA" />
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox ID="chkCatA" runat="server" Enabled="false" CssClass="CatA"  />
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField>
    <HeaderTemplate>
    Category B
    <asp:CheckBox ID="chkSelectAllCatB" runat="server" Visible="false" CssClass="CatB" onclick="javascript:SelectAllCheckboxesB(this);" />
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox ID="chkCatB" runat="server" Enabled="false" />
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>

最佳答案

这是基于 Ashish Patil 提出的解决方案进行一些修改以在未选中网格行中的任何复选框时清除标题行中的复选框。

在 GridView 中创建一个模板列:

<asp:templatefield>
<headertemplate>
  <asp:CheckBox ID="chkSelectAll" cssclass="chkHeader" runat="server" />
</headertemplate>
<itemtemplate>
  <asp:CheckBox ID="chkSelect" cssclass="chkItem" runat="server"/>
</itemtemplate>
</asp:templatefield>

jquery脚本,放在$(document).ready中例如:

var headerChk = $(".chkHeader input");
var itemChk = $(".chkItem input");

headerChk.click(function () { 
 itemChk.each(function () { 
  this.checked = headerChk[0].checked; }) 
});

itemChk.each(function () {
  $(this).click(function () {
    if (this.checked == false) { headerChk[0].checked = false; }
  })
});

关于asp.net - 使用 JQuery 在 GridView ASP.NET 中选择所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2857698/

相关文章:

javascript - 如何使用 ASP.Net 中的 PageMethods 将多维数组从 Javascript 传递到服务器

javascript - 如何在不污染全局命名空间的情况下共享常用的jquery函数?

javascript - 未捕获的类型错误 : Cannot read property 'then' of undefined in React ajax Call?

javascript - IE 兼容模式 JavaScript 函数未调用

c# - ASP.NET MVC 5 & Entity Framework 多对多关系

c# - ASP.NET 处理外部服务器 session - 清理

javascript - 如何在 HTML 中每秒调用一个 JavaScript 函数?

jquery - reCaptcha 字段按要求填写

javascript - 如何下载多张图片?

ASP.NET 客户端与服务器 View 渲染