【问题标题】:Is there a global "onRequestComplete" event when using ASP.Net Update Panels?使用 ASP.Net 更新面板时是否存在全局“onRequestComplete”事件?
【发布时间】:2011-08-18 14:16:12
【问题描述】:

我有一个带有公共 ShowWaitingDialog 属性的母版页。当设置为 true 时,我只是在提交表单时显示一个模式“请稍候...”覆盖。这是通过使用以下方法注册一个名为 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 来注册一个隐藏模式覆盖的启动脚本,但我想知道是否还有其他方法。

【问题讨论】:

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


    【解决方案1】:

    您可以使用 Javascript 并使用 Microsoft Ajax 框架提供的 PageRequestManager 客户端 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

    【讨论】:

    • 谢谢,这正是我想要的。像魅力一样工作。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      相关资源
      最近更新 更多