自定义服务器控件与asp.net中的复选框数组并不主要复选框状态
问题描述:
我创建了一个呈现复选框列表的服务器控件。 问题是,当我检查一些复选框和回发表单时,所有复选框都未被选中。 这里是我的服务器控制类:自定义服务器控件与asp.net中的复选框数组并不主要复选框状态
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();
}
}
任何想法?
答
或许CreateChildControls
出现在反序列化视图状态的步骤之后。您是否试过将Controls.Add(Table)
移动到OnInit
?
您可能会发现MSDN article on ASP.NET page life cycle有趣的阅读。它仅在注释部分提到了CreateChildControls。
CreateChildControls documentation page的注意事项不要超越该方法。如果它可以帮助你,买Roy Soliver啤酒:)
嗨Andomar。移动Controls.Add(表)到OnInit工作。 – 2011-05-30 06:46:57