【问题标题】:ASP.Net - Is it possible for an UpdatePanel to use a control within a UserControl as a Trigger?ASP.Net - UpdatePanel 是否可以将 UserControl 中的控件用作触发器?
【发布时间】: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


    【解决方案1】:

    我不知道您要求的是否可行,但是您为什么不通过 WebToolBar 控件引发自定义按钮单击事件呢?然后可以将此事件直接分配给触发器。

    【讨论】:

      【解决方案2】:

      RegisterAsyncPostBackControl 可能有效,但正如 Preeti 所说,您可能还必须从您的控件中公开一个事件并注册该事件。此外,您正在动态添加控件,并且必须在每个回发 (OnPreRender) 上重新添加它才能正确触发事件。

      ScriptManager1.RegisterAsyncPostBackControl(button );
      

      参考:

      Dynamically Register an Asynchronous Postback Control with a ScriptManager

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        相关资源
        最近更新 更多