【发布时间】:2010-11-02 09:39:03
【问题描述】:
我想将 ASP.NET LinkButton 动态添加到我的 SharePoint Web 部件。我将 LinkButton 与事件处理程序挂钩,但是当我执行代码时,似乎从未触发该事件。
我应该在生命周期的哪个位置(哪个事件)添加这样的控件以及如何添加?
谢谢。
【问题讨论】:
标签: asp.net sharepoint web-parts
我想将 ASP.NET LinkButton 动态添加到我的 SharePoint Web 部件。我将 LinkButton 与事件处理程序挂钩,但是当我执行代码时,似乎从未触发该事件。
我应该在生命周期的哪个位置(哪个事件)添加这样的控件以及如何添加?
谢谢。
【问题讨论】:
标签: asp.net sharepoint web-parts
在webpart的CreateChildControls()事件中添加,如:
protected override void CreateChildControls()
{
LinkButton linkbutton = new LinkButton();
linkbutton.Click += ClickButton;
this.Controls.Add(linkbutton);
}
protected void ClickButton(object sender, EventArgs e)
{
// handle event
}
【讨论】:
如果您需要让控件触发服务器事件,您需要在 Page_Init 或 Page_Load 生命周期中注册控件以触发事件。如果您在 PreRender 阶段添加控件,则为时已晚。或者重写 CreateChildControls() 方法并在该方法中添加控件。
您不需要做任何特别的事情来添加控件,只需:
var linkButton = new LinkButton(); //注册事件 Controls.Add(linkButton);【讨论】:
我也遇到了同样的问题。通过在 CreateChildControls 中添加 LinkButton 并显式设置 ID,然后使用 INamingContainer 接口装饰我的 WebPart 解决了我的问题。
【讨论】: