自定义控件事件没有触发
问题描述:
我有一个LinkButton的自定义控件。当我点击LinkButton时,它的点击事件不会触发。自定义控件事件没有触发
[ToolboxData("<{0}:View runat=server></{0}:View>")]
public class View : Control
{
private LinkButton lbNextPage;
protected override void CreateChildControls()
{
lbNextPage = new LinkButton() { ID = "lbNextPage", Text = "Next Page" };
lbNextPage.Click += delegate(object sender, EventArgs e)
{
Page.Response.Write("Event Fires!");
};
Controls.Add(lbNextPage);
}
}
我已提取只负责LinkButton的和它的事件(这是上面包括在内)的呈现的代码,以便除去所有的其他因素。
任何想法为什么事件没有解雇?我错过了什么吗?
答
这基本上是因为控件在页面生命周期中创建得太晚。根据MSDN Lifecycle document,您需要在PreInit中创建任何动态控件,而不是在CreateChildControls中创建。如果您正在开发自定义控件,则需要在Init重写中创建所有动态控件,并在其中挂接事件。
希望这会有所帮助! :)