2009-10-08 23 views
0

我创建了一个页脚用户控件,我动态控件添加到基于多种因素。我希望这些控件中的某些控件在同一页面上成为UpdatePanel的触发器。ASP.Net - 是否有可能为一个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); 

} 

我得到的错误:

ID为 'btn_Add' 控制找不到在UpdatePanel的 'pnl_Suppliers' 触发。

如果我将WebToolButton(基本上是一个带有Text的ImageButton)直接添加到页面而不是UserControl内部,那么它完美地工作。不幸的是,我希望我能得到这个我的用户(“PM_Footer.ascx”)内工作,因为它封装了大量的辅助功能和事件挂钩。

这是可能的吗?我抓着救命稻草,并试图分配的UniqueID和客户端ID,以更新面板代替,但它只是似乎是另一个用户控件中的任何控制,不能用作UpdatePanel的...这是有意义的方式触发。

回答

2

我不知道,如果你问什么是可能的,但你为什么不提高通过WebToolBar控制的自定义按钮单击事件?此事件可以直接分配给触发器。

2

RegisterAsyncPostBackControl可以工作,但Preeti说,你可能还需要从暴露你的控件的事件并注册该事件。此外,您正在动态添加控件,并且必须在每个回发(OnPreRender)上重新添加该控件才能正确触发该事件。

ScriptManager1.RegisterAsyncPostBackControl(button); 

参考:

Dynamically Register an Asynchronous Postback Control with a ScriptManager

相关问题