【发布时间】:2009-10-08 11:27:24
【问题描述】:
我创建了一个页脚用户控件,我根据许多因素动态地将控件添加到其中。我希望其中一些控件成为同一页面上 UpdatePanel 的触发器。
我在后面的代码中有以下内容:
private void SetupFooter()
{
WebToolBar footerToolBar = this.ShowFooterToolBar("~/ToolBars/PM_Footer.ascx");
footerToolBar.ID = "PM_Footer";
footerToolBar.OnNotify += new WebToolBar.OnNotifyHandler(footerToolBar_OnNotify);
WebToolButton button = new WebToolButton();
button.ID = "btn_Add";
button.Text = "Add";
button.ImageDefault = "~/Images/Icons/16/Plus.png";
button.CommandName = "Add";
button.Group = "1";
footerToolBar.AddWebToolButton(button);
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = button.ID;
trigger.EventName = "Click";
pnl_Suppliers.Triggers.Add(trigger);
}
我得到错误:
在 UpdatePanel“pnl_Suppliers”中找不到触发器 ID 为“btn_Add”的控件。
如果我将 WebToolButton(基本上是我制作的带有文本的 ImageButton)直接添加到页面而不是 UserControl 内,那么它可以完美运行。不幸的是,我希望我可以让它在我的 UserControl(“PM_Footer.ascx”)中工作,因为它封装了许多帮助功能和事件挂钩。
这有可能吗?我抓住了救命稻草,并尝试将 UniqueID 和 ClientID 分配给更新面板,但似乎另一个用户控件中的任何控件都不能用作 UpdatePanel 的触发器......这在某种程度上是有道理的。
【问题讨论】:
标签: asp.net ajax triggers updatepanel