我创建了一个呈现复选框列表的服务器控件。 问题是,当我检查一些复选框和回发表单时,所有复选框都会被取消选中。 这是我的服务器控件类:
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();
}
}
有什么想法吗?
答案 0 :(得分:1)
在反序列化视图状态的步骤之后可能会出现CreateChildControls
。您是否尝试将Controls.Add(Table)
移至OnInit
?
您可能会发现MSDN article on ASP.NET page life cycle是一个有趣的读物。它仅在评论部分提及CreateChildControls。
对CreateChildControls documentation page的唯一评论警告不要覆盖该方法。如果对您有帮助,请购买Roy Soliver啤酒:)