2012-02-27 8 views
2

グリッドビューのすべてのレコードを選択するためにgridviewヘッダーのチェックボックスを使用しています。これはコードの背後にあるメソッドです。GridviewヘッダーのCheckBoxを使用してすべての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) 

+0

gridview aspxコードを提供できますか? –

+0

上記の更新。今すぐご確認ください。 – Roshe

答えて

1

ヘッダーテンプレートのチェックボックスコントロールは、html入力コントロールです。 ASP.NETチェックボックスコントロールとして変更する必要があります。サーバーチェックボックスコントロールとして変更し、試してください。実際にすべてをチェックして、すべてのチェックを外して、クライアント側のjavascriptで行うことができます。ポストバックは必要ありません。

関連する問題