如何在没有完全刷新的情况下从弹出页面更新c#父页面

时间:2010-11-04 02:13:23

标签: c# javascript ajax events updatepanel

有没有人知道我如何在弹出页面上的操作中重新加载我的父C#页面上的UpdatePanel而不刷新整个父页面。我的父页面不会在Url中保留其状态,因此用户可能在此处展开​​了div,在那里刷新了一个列表,并且需要保留该父页面状态。所有需要发生的事情是,当用户在弹出窗口中添加新事件时,包含GridView为“DomainObjects.Incident”的UpdatePanel应该更新/刷新。

有没有办法在两个不同的asp.net页面之间连接事件?或者我应该使用javascript吗?

4 个答案:

答案 0 :(得分:3)

完全由.net代码管理的唯一方法是使用类似AjaxControlToolkit的东西使弹出窗口成为主页面中的模态div。

否则,您可以在子页面和父页面中使用javascript来触发父页面中的一些回发/回调。您可以将回发/回调事件设置为更新面板的触发器。

答案 1 :(得分:1)

您可以通过调用:

刷新UpdatePanel
__doPostBack('<UpdatePanel ID>', '');

如果您想从子页面执行此操作,您应该能够在函数中包装调用并通过JavaScript调用它。

示例:

// Parent Page Refresh Function
function Refresh()
{
    __doPostBack('UpdatePanel1', '');
}

//Child Page Trigger
<input type="button" id="button1" onclick="window.opener.Refresh()" value="Refresh Parent" />

通过选中“window.opener.closed”,你应该确保在调用Refresh()之前父文件仍处于打开状态。

我没有测试过这段代码,所以可能有一个类型'。

答案 2 :(得分:0)

看看window.opener

Reference parent window document

JQuery - Write to opener window

我的第一个想法是与父窗口通信以使用javascript执行刷新,您可以通过页面源查看更新面板调用的javascript并使用相同的内容。

答案 3 :(得分:0)

如果有机会使用RadWindow(telerik),则可以在父页面和子页面之间进行通信。

看演示 http://demos.telerik.com/aspnet-ajax/window/examples/dialogreturnvalue/defaultcs.aspx