2017-04-11 77 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,然後我的函數按預期工作。