使用ASP.Net更新面板时是否存在全局“onRequestComplete”事件?

时间:2011-08-18 14:16:12

标签: asp.net asp.net-ajax updatepanel

我有一个包含公共ShowWaitingDialog属性的母版页。设置为true时,我只是在提交表单时显示模式“Please wait ...”叠加层。这是通过使用以下命令注册名为ShowWaitingDialog()的客户端函数来完成的:

Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "ShowWaitingDialog", "ShowWaitingDialog()");

作为旁注,我还有一个编码器可以使用的功能,如果链接到可能需要一段时间加载的页面:

public void AttachWaitingDialog(HyperLink HyperLinkControl){
if (this.ShowWaitingDialog)
    HyperLinkControl.Attributes.Add("onclick", "ShowWaitingDialog();");}

在将UpdatePanel引入页面之前,这些工作正常。在更新面板内发生回发时,会正确显示该对话框。但是,当请求完成时,它永远不会消失。我希望Microsoft ajax框架在制作更新面板请求时会使用某种全局完整事件。这样我就可以在执行时关闭模态溢出。有吗?

我还没有尝试过,但我想我可以使用ScriptManager来注册隐藏模态叠加层的启动脚本,但我想知道是否还有其他方法。

2 个答案:

答案 0 :(得分:1)

您可以使用Javascript并使用Microsoft Ajax框架提供的PageRequestManager clientside api。

<script type='text/javascript'>

var pageMgr = Sys.WebForms.PageRequestManager.getInstance();

pageMgr.add_beginRequest(BeforeAjaxRequest);
pageMgr.add_endRequest(AfterAjaxRequest);

function BeforeAjaxRequest(sender, args)
{
 alert('MyReqeustStart');
}

function AfterAjaxRequest(sender, args)
{
 alert('MyReqeustEnd');
}

</script>

更多细节: http://msdn.microsoft.com/en-us/library/bb311028.aspx

答案 1 :(得分:0)

我不确定UpdatePanels,但您可以查看Global.asax中的Application_EndRequest方法