0

私のページには CheckBoxList コントロールがあり、デフォルトですべてのチェックボックスをオンにしたいと考えています。どうやってやるの?私はいくつかの方法を試しましたが、それはしていません。ここに私のコードビハインドがあります:

protected void chkAll_CheckedChanged(object sender, EventArgs e)
    {

        foreach(GridViewRow gr in GridView1.Rows)
        {

            CheckBox cb = (CheckBox)gr.FindControl("chkItem");
            cb.Checked = true;
            if(((CheckBox)sender).Checked)
             cb.Checked = true;
                else
             cb.Checked = false;
        }

    }

ここに私のASPXコードがあります:

<asp:TemplateField HeaderText="Check All">
                    <HeaderTemplate>
                        <asp:CheckBox ID="chkAll" runat="server" AutoPostBack="True" OnCheckedChanged="chkAll_CheckedChanged" />
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkItem" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
4

1 に答える 1

1

次の ASPX を使用します。

<asp:GridView runat="server" ID="m_gridView" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="Check All">
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkAll" runat="server" AutoPostBack="True" OnCheckedChanged="chkAll_CheckedChanged" Checked="True" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkItem" runat="server" Checked="True" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

デフォルトでは、[すべてチェック] と個々のチェック ボックスがオンになっている必要があります。

コード ビハインドで次の操作を行います。

protected void chkAll_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox l_cbAll = (CheckBox)m_gridView.HeaderRow.FindControl("chkAll");
        foreach (GridViewRow l_row in m_gridView.Rows)
        {
                CheckBox l_cb = (CheckBox)l_row.FindControl("chkItem");
                l_cb.Checked = l_cbAll.Checked;
        }
    }
于 2012-10-24T16:35:54.073 に答える