asp.net中带有复选框数组的自定义服务器控件不是主复选框状态

时间:2011-05-28 21:23:21

标签: asp.net visual-studio-2010 .net-4.0 custom-server-controls

我创建了一个呈现复选框列表的服务器控件。 问题是,当我检查一些复选框和回发表单时,所有复选框都会被取消选中。 这是我的服务器控件类:

public class WeekControl : WebControl
{
    public bool ShowCheckBoxs { get; set; }

    public WeekControl()
    {
        ShowCheckBoxs = true;
        Table = new Table();
        Table.ID = "table1";
        CheckBoxes = new CheckBox[7, 4];
        Table.CssClass = "weekly";
    }

    protected override void OnInit(EventArgs e)
    {
        for (int i = 0; i < 6; i++)
        {
            TableRow tr = new TableRow();
            Table.Rows.Add(tr);
            for (int j = 0; j < 4; j++)
            {
                TableCell tc = new TableCell();
                tr.Cells.Add(tc);
                if (ShowCheckBoxs)
                {
                    CheckBoxes[i, j] = new CheckBox();
                    CheckBoxes[i, j].ID = "ch" + i.ToString() + j.ToString();
                    tc.Controls.Add(CheckBoxes[i, j]);
                }
            }
        }
    }

    public CheckBox[,] CheckBoxes;
    public Table Table;
    protected override void CreateChildControls()
    {

        Controls.Add(Table);
        ChildControlsCreated = true;
        base.CreateChildControls();
    }


}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在反序列化视图状态的步骤之后可能会出现CreateChildControls。您是否尝试将Controls.Add(Table)移至OnInit

您可能会发现MSDN article on ASP.NET page life cycle是一个有趣的读物。它仅在评论部分提及CreateChildControls。

CreateChildControls documentation page的唯一评论警告不要覆盖该方法。如果对您有帮助,请购买Roy Soliver啤酒:)