这是我的代码。问题是我可以在checbox1_checkedChanged()中获得第一组复选框,但不能获得第二组复选框。我做错了什么?
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkthatBox= (CheckBox)sender;
if (checkthatBox.Checked)
{
for(int i=0; i<4; i++)
{
CheckBox ch = new CheckBox();
ch.ID = "ch" + i;
ch.Text = "site "+i;
ch.CssClass = "listItemWidth";
ch.AutoPostBack= true;
ch.ViewStateMode = System.Web.UI.ViewStateMode.Enabled;
ch.CheckedChanged += ch_CheckedChanged;
sitesPanel.Controls.Add(ch);
}
}
}
void ch_CheckedChanged(object sender, EventArgs e)
{
Response.Write("YO");
CheckBox checkthatBox = (CheckBox)sender;
if (checkthatBox.Checked)
{
for (int i = 0; i < 4; i++)
{
CheckBox ch = new CheckBox();
ch.ID = "dl" + i;
ch.Text = "Document Library " + i;
ch.CssClass = "listItemWidth";
ch.CheckedChanged += ch_CheckedChanged;
docLibPanel.Controls.Add(ch);
}
}
throw new NotImplementedException();
}
答案 0 :(得分:0)
似乎第二组复选框在页面生命周期的后期重新创建。
答案 1 :(得分:0)
如果您希望在Page_Init
之后访问它们或处理来自它们的事件,则应每次在Postback
创建动态控件。
请参阅以下链接了解详情: http://msdn.microsoft.com/en-us/library/hbdfdyh7%28v=vs.100%29.aspx
Here你可以看到同样的问题。
答案 2 :(得分:0)
尝试设置
EnableViewState=false
动态创建的控件