2009-01-06 73 views
23

有沒有一種方法可以在UpdatePanel進程完成時執行腳本。ASP.NET - UpdatePanel和JavaScript

我有一個允許對記錄進行「插入」,「複製」和「編輯」的頁面。 這是全部在UpdatePanel上完成的,以防止頁面導航。 頁面上的其他位置我想打印「閃存」消息 - 如「您已成功輸入記錄」。它不在UpdatePanel附近,我想在消息上使用jQuery效果,以便在4秒後淡出。我怎樣才能使用UpdatePanel發送腳本或在UpdatePanel刷新後執行腳本?我應該寫腳本到asp:文字嗎?想法?

回答

29

是:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

然後:

function endRequestHandler(sender, args) 
{ 
    // Do stuff 
} 

文檔herehere。請記住,這將觸發頁面上的每個AJAX請求。

26

這應該做的伎倆:

 <script type="text/javascript"> 
      var prm = Sys.WebForms.PageRequestManager.getInstance(); 
      prm.add_beginRequest(BeginRequestHandler); 
      prm.add_endRequest(EndRequestHandler); 

      function BeginRequestHandler(sender, args) 
      { 
       //Jquery Call 
      } 

      function EndRequestHandler(sender, args) 
      { 
       //Jquery Call 

      } 
     </script> 
+1

謝謝。我用它來添加一個微調。 – 2011-02-13 01:51:09

2

布魯諾,

首先,要回答你直接的問題。在由更新面板調用的回調函數中,您應該可以使用RegisterStartupScript調用來調用JS方法。然後在您的JS方法,你會顯示消息,然後你可以用做:

setTimeout('$('#myMessage').fadeOut("slow")', 4000); 

有它在4秒鐘後消失。

爲了更進一步,由於您已經在實施JavaScript,因此我會邀請您檢查this article about UpdatePanels。如果可能的話,我會嘗試發送Ajax調用來進行插入,複製和編輯,這將進一步簡化用戶的反饋,並防止線路上的多餘信息。

+0

我不相信對RegisterStartupScript的調用可以將JS注入到AJAX回調中。 – 2009-01-06 21:06:05

3
var requestManager = Sys.WebForms.PageRequestManager.getInstance(); 
requestManager.add_beginRequest(function() { alert('here1') }); 
requestManager.add_endRequest(function() { alert(here2') }); 

來源:http://www.howtositecore.com/?p=36

3

的Sys.WebForms.PageRequestManager.getInstance()方法的工作非常適合我的。

我使用了很多包含多個UpdatePanel的頁面,並且我已經瞭解到,即使您不希望刷新UpdatePanel,它也會自動啓動。因此,在事件發生的功能裏面,請確保你有類似的東西:

function BeginRequestHandler(sender, args) { 
if (args.get_postBackElement().id == "ID of the Updatepanel") { 
// do stuff here