我需要动态加载Web用户控件 查看http://weblogs.asp.net/srkirkland/archive/2007/11/05/dynamically-render-a-web-user-control.aspx,它指出不会触发页面生命周期事件。 我以为我可以通过反思提出这些事件。我无法想象如何解雇事件,我错过了什么?
由于
波奇
答案 0 :(得分:0)
在调用RenderControl之前,您可以执行类似的操作:
Page page = new Page();
page.Controls.Add(报告);
在这种情况下,将调用Init方法。
您的链接上给出的答案
答案 1 :(得分:0)
标准的Load事件应该可以正常启动。为用户控件引发标准ASP.Net控件事件。如果您想从父页面中激活usercontrol中的事件,那么您将需要执行以下操作:
在您的usercontrol中创建一个事件并连接它。在这个例子中,我将从Page_Load中调用它:
public event EventHandler TestEvent;
protected void Page_Load(object sender, EventArgs e)
{
if (this.TestEvent != null)
{
this.TestEvent(this, e);
}
}
在您的父页面内连接用户控件TestEvent:
protected override void OnInit(EventArgs e)
{
MyUserControl uc = LoadControl("~/PathToUserControl.ascx");
uc.TestEvent += new EventHandler(MyUserControl_TestEvent);
}
protected void MyUserControl_TestEvent(object sender, EventArgs e)
{
//this code will execute when the usercontrol's Page_Load event is fired.
}
希望有所帮助!!