【问题标题】:How can I update an UpdatePanel in a control from the page?如何从页面更新控件中的 UpdatePanel?
【发布时间】:2010-11-14 11:35:30
【问题描述】:

我在一个还包含用户控件的页面上有一个模式。

单击模式中的“确定”按钮时,我想更新页面上用户控件中包含的 UpdatePanel。

目前,模式上的“确定”按钮执行整页回发,我只想更新面板,但我不确定如何将其添加为触发器,因为它不在 UpdatePanel 的控件中.

谢谢。


我有一个部分答案...我可以通过这样做更新面板一次:

Dim addTrigger As New AsyncPostBackTrigger
addTrigger.ControlID = MyButton.ID
addTrigger.EventName = "Click"
MyUserControl.GetUpdatePanel.Triggers.Add(addTrigger)

这将导致第一次部分回发,但在第一次之后会导致整个页面重新加载。有什么想法吗?

【问题讨论】:

    标签: asp.net webforms updatepanel postback partial-postback


    【解决方案1】:

    您可以将 OK 按钮显式添加为 UpdatePanel 的 AsyncPostBackTrigger。

    在更新面板的 aspx 标记中:

    <asp:UpdatePanel ID="updPanel" runat="server">
        <ContentTemplate>
        ....
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="the control" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
    

    或在代码隐藏中:

    protected override void OnInit(EventArgs e)
    {
        AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
        trigger.ControlID = "the Control";
        trigger.EventName = "Click";
    
        updPanel.Triggers.Add(trigger);
    
        base.OnInit(e);       
    }
    

    【讨论】:

      【解决方案2】:

      只需将面板的内容放在更新面板中,这样您就可以:

      您的用户控制在这里。

      这也将防止弹出窗口消失,直到您希望它消失。

      在您的代码中,您可以使用 popup.show(0 或 pop.hide() 调用它,并通过添加 gan 事件并将其链接到您的用户控件并在您的页面代码中处理它。这样您的用户控件可以指导弹出窗口做什么和什么时候做。如果出于某种原因需要,您甚至可以让它更新 hte 更新面板。


      对于我刚刚意识到的上述情况,您需要更新控件中的 ehte 面板。在控件中创建一个方法,该方法调用更新面板的更新方法,然后从您的页面触发该事件。反过来也是一样的原理。通过很好地利用事件,您可以连接您的应用程序来做一些非常酷的事情。

      【讨论】:

        【解决方案3】:

        您不能从代码隐藏中以编程方式添加一个 AsyncPostBackTrigger 吗?

        Like This?

        【讨论】:

        • 链接不存在了。请编辑此答案以添加来自外部链接的相关内容,否则此答案将没有意义。
        【解决方案4】:

        您可以使用以下模式在 JavaScript 中控制面板回发:

        var prm = Sys.WebForms.PageRequestManager.getInstance(); 
        prm._panelsToRefreshIDs = UPComments.uniqueID;
        prm._doPostBack(eventTarget,eventArgument);
        theForm.submit();
        

        【讨论】:

          【解决方案5】:

          也许我在这里遗漏了一些微妙之处,但您不能直接在更新面板上拨打Update() method 吗?

          【讨论】:

          • 问题是我将调用 update() 的方法(按钮的单击事件)导致整个页面回发。它需要是一个触发器,让页面知道只是为了更新该面板。
          • 啊,明白了。您可能需要添加一个 asp:AsyncPostBackTrigger 引用更新面板触发器中的按钮。
          猜你喜欢
          • 1970-01-01
          • 2011-02-22
          • 1970-01-01
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多