0

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

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

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

谢谢。


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

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

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

4

5 回答 5

1

您可以将 OK 按钮显式添加为 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);       
}
于 2009-07-27T20:13:32.690 回答
0

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

于 2009-07-27T19:59:46.290 回答
0

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

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm._panelsToRefreshIDs = UPComments.uniqueID;
prm._doPostBack(eventTarget,eventArgument);
theForm.submit();
于 2009-07-27T20:08:30.300 回答
0

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

像这样

于 2009-07-27T20:11:07.157 回答
0

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

您的用户控制在这里。

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

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


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

于 2009-07-27T20:19:15.847 回答