【发布时间】:2011-09-15 14:15:40
【问题描述】:
我有一个 aspx 页面,它根据一组单选按钮上的输入动态地将 UserControl 加载到 Panel 对象中。 UserControl 在回发时成功添加并正确显示到面板,并在 UC 中调用 Page_Load() 事件就好了,但是当我以任何会触发事件的方式与表单交互时,回发时不会捕获该事件。
我尝试在我知道会被调用的 Page_Load() 中添加事件处理关联,并在 ASP.NET 标记中添加关联,结果没有任何差异。
这就是我添加控件的方式(对象名称已被简化):
private UserControl _control;
protected void RadioButtonGroup_CheckedChanged(object sender, EventArgs e)
{
RadioButton radioButton = (RadioButton)sender;
if (radioButton == RadioButton1Ctl)
{
_control = (UserControl1)LoadControl("~/Controls/UserControl1.ascx");
PanelCtl.Controls.Add(_control);
}
else if (radioButton == RadioButton2Ctl)
{
_control = (UserControl2)LoadControl("~/Controls/UserControl2.ascx");
PanelCtl.Controls.Add(_control);
}
}
正如我所说,当我单击任何按钮或有任何应该在 UC 上绑定的回发事件时,控件会成功添加,控件会从页面中删除并且不会触发事件。
任何帮助将不胜感激。
【问题讨论】:
-
奇怪,在加载后添加到面板之前尝试设置控件id。
-
只是为了确认一下-您是说您的动态创建的控件在回发后不会出现吗?或者它们确实出现了,但事件处理程序对这些控件不起作用?
标签: c# asp.net user-controls event-handling panel