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 回答