我有一个空白的用户控件(子),在Page_Load中我创建了一些文本框和一个按钮。我还在按钮上添加了一个事件。
然后我从另一个usercontrol(parent)中的占位符动态加载该用户控件。 两个控件都正确呈现,但是当我单击按钮时,事件未被触发。 关于如何处理事件的任何想法?
子代码:
protected void Page_Load(object sender, EventArgs e)
{
/*... other user controls ..*/
UpdateButton = new LinkButton();
UpdateButton.ID = "buttonid";
UpdateButton.Text = "text";
UpdateButton.Click += new EventHandler(UpdateButton_Click);
this.Controls.Add(UpdateButton);
}
protected override void Render(HtmlTextWriter writer)
{
for (int i = 0; i < this.Controls.Count; i++)
{
this.Controls[i].RenderControl(writer);
}
}
public void UpdateButton_Click(object sender, EventArgs e)
{
//Do stuff
}
家长代码:
protected void Page_Load(object sender, EventArgs e)
{
placeholder.Controls.Clear();
ChildControl uc = (ChildControl)LoadControl("~/UserControls/ChildControl.ascx");
placeholder.Controls.Add(uc);
}
如果我使用子控件directy(即没有父控件),则会引发click事件并很好地处理。但是当我使用父控件时,调试器甚至不会在UpdateButton_Click()中找到断点。
提前致谢。
答案 0 :(得分:0)
我想我知道会发生什么。在您的父Page_Load中,您正在调用placeholder.Controls.Clear();
这会执行您想象并清除控件,包括已发生的任何事件。删除此行会发生什么?你是否在每次回发时都创建了一个额外的?