在动态加载的Web用户控件中引发Load事件

时间:2011-01-19 16:49:50

标签: c# asp.net user-controls

我需要动态加载Web用户控件 查看http://weblogs.asp.net/srkirkland/archive/2007/11/05/dynamically-render-a-web-user-control.aspx,它指出不会触发页面生命周期事件。 我以为我可以通过反思提出这些事件。我无法想象如何解雇事件,我错过了什么?

由于

波奇

2 个答案:

答案 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.
}

希望有所帮助!!