Mar*_*lar 6 c# events user-controls multiview
我动态地将UserControl加载到MultiView控件中的View中.虽然UserControl添加了一个事件处理程序,但事件永远不会触发.
我在这里错过了什么?谢谢!
包含ASPX页面:
protected override void OnPreRender(EventArgs e)
{
if (MultiView1.ActiveViewIndex == 2) //If the tab is selected, load control
{
Control Presenter = LoadControl("Presenter.ascx");
(MultiView1.ActiveViewIndex.Views[2].Controls.Add(Presenter);
}
base.OnPreRender(e);
}
Run Code Online (Sandbox Code Playgroud)
Presenter.ascx.cs
override protected void OnInit(EventArgs e)
{
Retry.Click += this.Retry_Click; //This is a .Net 2.0 project
base.OnInit(e);
}
protected void Retry_Click(object sender, EventArgs e)
{
//This never fires
}
Run Code Online (Sandbox Code Playgroud)
我认为它没有触发,因为你正在页面的prerender事件中加载控件.在回发时,控件正在丢失,因为它没有视图状态.因此无法控制其事件.尝试在页面的init事件中加载控件.让我们知道会发生什么!
在渲染之前完成回发事件处理,因此在您的案例中页面中不存在控件.
生命周期事件按此顺序触发(跳过几个):
事件处理在Load和PreRender之间完成(如果某些事件改变了页面的呈现方式,则有意义).
因此,只需将加载Retry控件的代码移动到Load或Init即可.