复选框更改了动态添加控件的事件未触发
本文关键字:事件 控件 添加 动态 复选框 | 更新日期: 2023-09-27 18:09:25
我已经在我的jQuery手风琴控件的页面加载事件中动态创建了3个复选框,我也为文本框关联了CheckedChanged事件。但事件根本没有发生。我不知道这里发生了什么。请帮帮我。谢谢你的反馈。
我用来生成动态控件和关联事件的代码protected void Page_Load(object sender, EventArgs e)
{
dvAccordion.Controls.Clear();
foreach (DataRow row in dataSetIP.Tables[0].Rows)
{
HtmlGenericControl tt= new HtmlGenericControl("H3");
HtmlAnchor anc= new HtmlAnchor();
HtmlGenericControl dvP= new HtmlGenericControl("DIV");
dvP.InnerHtml = row["LD"].ToString();
CheckBox chkTest = new CheckBox();
if (!Page.IsPostBack) chkTest .ID = "chk" + row["SD"].ToString();
else
{
string uniqueID = System.Guid.NewGuid().ToString().Substring(0, 5);
chkTest .ID = "chk" + uniqueID + row["SD"].ToString();
}
chkTest.Text = row["SD"].ToString();
chkTest.AutoPostBack = true;
chkTest.CheckedChanged += new EventHandler(chkTest _CheckedChanged);
chkTest.InputAttributes.Add("Value", row["ID"].ToString());
anc.Controls.Add(chkTest);
tt.Controls.Add(anc);
dvAccordion.Controls.Add(tt);
dvAccordion.Controls.Add(dvP);
}
}
但是CheckboxChanged事件没有触发
这是一个何时添加控件、ViewState和一些生命周期的问题。动态添加完全参与整个生命周期的控件是一个复杂的主题,如果没有更多的背景,您最好阅读真正理解动态控件系列。
在你的情况下,我认为你是在ViewState初始化后的下一个页面加载上重新创建控件,所以它不知道绑定的时候,它需要排队调用你的绑定事件处理程序
尝试在Page_Init()
事件(在Page_Load()
事件之前触发)中添加控件。