如何从页面更新控件中的UpdatePanel?

时间:2009-07-27 19:43:17

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

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

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

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

感谢。


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

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

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

5 个答案:

答案 0 :(得分:1)

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

在UpdatePanel的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);       
}

答案 1 :(得分:0)

也许我在这里遗漏了一些细微之处,但是你不能只是在更新面板上调用Update() method吗?

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

Like This

答案 4 :(得分:0)

只需将Panel的内容放在您拥有的更新面板中:

                      您的用户控制在这里。           

这也可以防止弹出窗口消失,直到你想要它为止。

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


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