2017-04-11 79 views
0

我正尝试为在我的页面上执行回发的事件创建加载屏幕,特别是从GridView的行点击执行回发并导致整个页面加载。我想在页面上有某种加载页面或加载片段。从谷歌搜索/ stackoverflowing我把它从其他帖子和资源一起。为什么不会在异步回发中调用此函数

脚本

<script type="text/javascript"> 

    $(function() { 

     // Get the instance of PageRequestManager. 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 
     // Add initializeRequest and endRequest 
     prm.add_initializeRequest(prm_InitializeRequest); 
     prm.add_endRequest(prm_EndRequest); 

     console.log(prm); 
     // Called when async postback begins 
     function prm_InitializeRequest(sender, args) { 
      console.log("init sender " + sender); 
     } 

     // Called when async postback ends 
     function prm_EndRequest(sender, args) { 
      console.log("end sender: " + sender);  
     } 

    }); 

</script> 

的GridView/UpdatePanel的

<asp:UpdatePanel ID="actAddPanel" runat="server" 
updatemode="Conditional" 
ChildrenAsTriggers="true"> 
    <ContentTemplate> 
    <asp:GridView></asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

问题

脚本应该让我知道什么时候回传的开始和结束,因此理论上prm_InitalizeRequest可以让我修改的元素页面来创建自定义加载动画/细节,同时回发正在发生,并且prm_EndRequest会让我知道回传结束时如何在我知道什么时候结束那个自定义的动画/细节。

我做了gridview触发器的行与ChildrenAsTriggers="true",但是当我做回发时,我没有看到我的console.log消息让我知道这些函数实际上被调用。我如何获得这些功能?

+0

你可以尝试将JavaScript代码移出$(function(){})吗?据我所知,$(function(){})仅在初始加载时触发,并且从更新面板的后续部分更新不会触发$(function(){}) –

+0

@ Chih-HoAndyChou当我这样做时'Sys'未定义 –

+1

尝试在ScriptManager控制之后移动脚本块。我刚刚尝试过,并按预期工作。 –

回答

0

我发现为了让这些函数执行,它们需要由一个事件触发。在我的gridview中,我添加了Triggers,然后我的函数按预期工作。