c# - 在 Gridview 标题中使用 CheckBox 选择所有 Gridview 记录

标签 c# asp.net

我在 gridview 标题中使用复选框来选择 gridview 中的所有记录。这是代码隐藏方法。

<asp:GridView ID="gvP" runat="server" AutoGenerateColumns="false" AllowPaging="false"
AllowSorting="false" DataKeyNames="PmtId" CssClass="list-table" HeaderStyle-CssClass="header"
EnableModelValidation="True">
    <Columns>
    <asp:BoundField DataField="PmtId" HeaderText="PmtId" ReadOnly="True" Visible="false" />
    <asp:TemplateField HeaderText="All" ItemStyle-CssClass="checkbox-col" HeaderStyle-CssClass="checkbox-col">
    <HeaderStyle HorizontalAlign="Center" />
    <HeaderTemplate>
    <input id="chkBoxAll" type="checkbox" onclick='javascript:checkAllBoxes("CLEAR_PT")' />
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox runat="server" ID="chkSelect" />
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="S/No." ItemStyle-CssClass="seq-col" HeaderStyle-CssClass="seq-col">
    <ItemTemplate>
    <%# Eval("SNo")%>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
</asp:GridView> 

protected void chkSelectAll(string arg)
{
    if (arg.Equals("CLEAR_PT"))
    {
    CheckBox chkAll = gvP.HeaderRow.FindControl("chkBoxAll") as CheckBox;
    if (chkAll.Checked == true)
    {
    foreach (GridViewRow gvRow in gvP.Rows)
    {
    CheckBox chkSel = (CheckBox)gvRow.FindControl("chkSelect") as CheckBox;
    chkSel.Checked = true;
    }
    }
    else
    {
    foreach (GridViewRow gvRow in gvP.Rows)
    {
    CheckBox chkSel = (CheckBox)gvRow.FindControl("chkSelect") as CheckBox;
    chkSel.Checked = false;
    }
    }
    }
}

我在以下行中收到“对象引用未设置为对象的实例”运行时错误。

if (chkAll.Checked == true)

有什么想法吗?

最佳答案

标题模板中的复选框控件是 html 输入控件。您需要更改为 ASP.NET 复选框控件。更改为服务器复选框控件并尝试。实际上选中所有和取消选中所有都可以在客户端 javascript 中完成。不需要回发。

关于c# - 在 Gridview 标题中使用 CheckBox 选择所有 Gridview 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459391/

相关文章:

c# - 窗口在服务模式下没有文本

c# - 标准化文件夹中的文件名

javascript - ASP.NET Ajax 错误 : Sys. WebForms.PageRequestManagerParserErrorException

c# - ASMX Web 服务适用于 HTTP 和 HTTPs

c# - 是否可以在不添加服务引用的情况下访问 WCF 服务?

c# - 在我使用 linq 键入时运行任务(如果仍在运行,则取消之前的任务)

c# - LINQ 如何创建 BETWEEN 条件

c# - 执行JQuery脚本时页面滚动到顶部

c# - 不使用 @Html.Raw 从 ToString 输出 HTML

c# - 检测鼠标左键单击 Winform