2012-10-12 85 views
0

我有一个可视的Web部件,用于下面的代码的SharePoint,但点击处理程序的代码永远不会触发。这有什么错我的代码?:点击事件不会触发

protected Button btApply; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    ... some code ... 
    btApply = new Button(); 
    btApply.Text = "Apply"; 
    btApply.CssClass += "InputControl"; 
    btApply.Click += new EventHandler(btApplyClick); 
    this.Controls.Add(btApply); 
    ... some code ... 
} 

protected void btApplyClick(object sender, EventArgs e) 
{ 
    ... some code ... 
} 
+0

控件的初始化必须处于preinit事件中,以便页面生命周期能够优先处理事件。 – JSJ

回答

1

如果你是动态创建控件,你必须给它Page_PreInit。从MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4报价,第106页:

您可以控制在运行时通过处理 Page.PreInit事件(如果你不使用母版页)或 Page.Init事件添加到表单(如果您使用的母版页和您要添加的 控制到内容页)

页(以及网络的一部分,用户控制等)的生命周期在MSDN“ASP.NET Page Life Cycle Overview”文章解释。

而且,看到非常相似的问题Event for Dynamically created Controls in ASP.Net

所以,只要将你的控件创建和事件配线成Page_PreInit,你应该罚款。