我有一个可视化的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 :(得分: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”文章中解释了页面(以及Web部件,用户控件等)生命周期。
另外,请参阅非常相似的问题Event for Dynamically created Controls in ASP.Net
因此,只需将您的控件创建和事件连接移至Page_PreInit
,您就可以了。