2009-07-16 3 views
1

aspx 페이지에서 window.onbeforeunload 이벤트를 연결합니다. 동일한 페이지에서 UpdatePanel에있는 GridView를 페이징하면 이 아닌이 발생해야합니다.ASP.NET AJAX가 updatepanel의 AJAX 요청에 대해 onbeforeunload를 표시하지 않습니다.

PageRequestManager의 initializeRequest 이벤트를 연결하려고 시도했지만 너무 늦게 발생합니다 (예 : onbeforeunload). 내 onbeforeunload 핸들러에서 PageRequestManager.get_isInAsyncPostBack()을 검사 해 보았지만 false도 반환합니다. gah! 의 GridView 열에서 버튼을하지 않는 반면의 GridView 페이지 링크 이외의 언로드의 원인이

537702

그러나 그것은 나에게 이해가되지 않습니다 :

나는이 SO 스레드를 읽고? 아무도이 문제를 해결하는 방법을 알고 있습니까? 클라이언트 측 클릭 핸들러를 모든 GridView의 페이지 앵커에 연결하여 부울 플래그를 설정하는 것이 유일한 방법이라고 추측합니다.하지만이를 신뢰할 수있는 방식으로 수행하는 방법을 잘 모르겠습니다.

답변

2

오케이 JQuery를 구하십시오!

<script type="text/javascript"> 
    var flag = true; 
    window.onbeforeunload = beforeUnloading; 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_pageLoaded(initPagers); 

    function initPagers() { 
     $(".gridViewPagerStyle").click(function() { flag = false; }); 
    } 

    function beforeUnloading(){ 
     if(flag) 
      return "unloading"; 

     flag = true; 
    } 
</script> 

: 
: 

<asp:GridView ... PagerStyle-CssClass="gridViewPagerStyle" ... /> 

: 
: 

는 클릭 할 때 사용하는 플래그가 onbeforeunload

을 피하기 위해 플래그를 설정 자바 스크립트 클릭 핸들러를 추가하는 것을 사용하는 모든 호출기 링크에 대한 CSS 클래스를 설정
관련 문제