如何将checkboxlist项设置为默认选中

时间:2012-10-24 14:57:56

标签: asp.net

在我的页面中,我有一个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>

1 个答案:

答案 0 :(得分: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;
        }
    }