DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> ASP.NET Ajax-PageRequestManager
ASP.NET Ajax-PageRequestManager
編輯:AJAX詳解     

PageRequestManager是ASP.Net AJax用來管理非同步ClIEnt的操作方式,前陣子為了避免網頁重覆送出的問題,和同事們討論之後,決定利用「蓋玻璃」的方式,替整個網頁加上一層透明的DIV,防止User重覆按下送出的動作。

因為整個網站是采用ASP.Net Ajax開發,所以大部份的資料更新動作都是透過update panel來執行;因此,在回到server前,AJax會先呼叫一次

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest()這個方法,等到update panel執行完成之後,會再呼叫一次

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(),所以可以透過這二個方式來達到效果建立及取消。

以下是截自官方網站的范例:

  1. <script language="Javascript" type="text/Javascript"> 
  2. Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);  
  3. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);  
  4. function BeginRequestHandler(sender, args)  
  5. {  
  6.     var elem = args.get_postBackElement();  
  7.     ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');  
  8. }  
  9. function EndRequestHandler(sender, args)  
  10. {  
  11.     ActivateAlertDiv('hidden', 'AlertDiv', '');  
  12. }  
  13. function ActivateAlertDiv(visstring, elem, msg)  
  14. {  
  15.     var adiv = $get(elem);  
  16.     adiv.style.visibility = visstring;  
  17.     adiv.innerHtml = msg;   
  18. }  
  19. </script> 

不過為了讓user一按下按鈕就無法動作,所以效果開始這段我是寫在button的onclIEntclick上面,再利用add_endRequest來取消效果。

1.先在網頁上放置一個div

  1. <div id="messageElement" class="busybox" style="font-size: 16px; font-family: Arial, Helvetica, sans-serif;"> 
  2.     <img alt="waiting" src="/App_Themes/images/indicator.gif" /> 
  3.     Please wait a moment...  
  4. </div> 

2.再來是Javascript的動作

先取到整個body的大小,然後把div放到跟body一樣大即可!

  1. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);  
  2. function EndRequestHandler(sender, args)  
  3. {  
  4.     showBusyContainer(false);  
  5. }  
  6. function showBusyContainer(show)  
  7. {    
  8.     if(show==true)  
  9.     {  
  10.         Sys.UI.DomElement.toggleCSSClass(document.body, "HiddenSelect");  
  11.         var bodyWidth = jQuery("body").outerWidth();  
  12.         var bodyHeight = Math.max(jQuery("body").outerHeight(), jQuery(window).height());  
  13.         var boxHeight = jQuery(".busybox").outerHeight();  
  14.         jQuery(".overlay").show()  
  15.              .CSS({ width:bodyWidth, height:bodyHeight});  
  16.         jQuery(".busybox").show()  
  17.              .CSS({ left: (bodyWidth - jQuery(".busybox").width()) / 2, position:"absolute", top:bodyHeight / 2 - boxHeight });  
  18.     }  
  19.     else  
  20.     {  
  21.         jQuery(".overlay").hide();  
  22.         jQuery(".busybox").hide();  
  23.         jQuery("body").removeClass("HiddenSelect");  
  24.     }  
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved