0

我有一个用于共享点的可视化 Web 部件,代码如下,但点击处理程序的代码永远不会触发。我的代码有什么问题?:

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 ...
}
4

1 回答 1

1

如果要动态创建控件,则必须在Page_PreInit. 引自MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4第 106 页:

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

页面(以及 Web 部件、用户控件等)生命周期在 MSDN“ ASP.NET 页面生命周期概述”文章中进行了说明。

另外,请参阅非常相似的问题Event for Dynamically created Controls in ASP.Net

因此,只需将您的控件创建和事件连接移入Page_PreInit,就可以了。

于 2012-10-12T11:00:43.973 回答