Sys.WebForms.PageRequestManager initializeRequest 이벤트

비동기 포스트백을 초기화하는 동안 발생합니다.

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler)
Sys.WebForms.PageRequestManager.getInstance().remove_initializeRequest(initializeRequestHandler)

용어

정의

initializeRequestHandler

호출할 처리기 메서드의 이름입니다.

initializeRequest 메서드는 비동기 요청 처리 작업이 시작되기 전에 발생합니다. 이 이벤트를 사용하여 포스트백을 취소할 수 있습니다.

PageRequestManager 이벤트 모델에 대한 자세한 내용은 부분 페이지 렌더링 이벤트 작업를 참조하십시오.

다음 예제에서는 initializeRequest 이벤트를 사용하여 비동기 포스트백을 취소하는 방법을 보여 줍니다. initializeRequest 이벤트 처리기의 스크립트는 PageRequestManager 클래스의 isInAsyncPostBack 속성을 사용하여 비동기 포스트백이 현재 진행되고 있는지 여부를 확인합니다. 그 결과 포스트백이 진행 중이면 Sys.WebForms.InitializeRequestEventArgs 클래스의 postBackElement 속성을 사용하여 포스트백을 발생시킨 요소의 ID를 확인합니다. 이 ID가 포스트백 취소 단추의 ID와 일치할 경우에는 abortPostBack 메서드가 호출되고, 그렇지 않을 경우에는 Sys.CancelEventArgs 클래스의 cancel 속성을 사용하여 현재 요청이 취소됩니다.


<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void ButtonClick_Handler(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>PageRequestManager initializeRequest Example</title>
    <style type="text/css">
    body {
        font-family: Tahoma;
    }
    a  {
        text-decoration: none;
    }
    a:hover {
        text-decoration: underline;
    }
    div.UpdatePanelStyle{
       width: 300px;
       height: 300px;
    }
    div.AlertStyle {
      font-size: smaller;
      background-color: #FFC080;
      height: 20px;
      visibility: hidden;
    }
    div.Container {
      display: inline;
      float: left;
      width: 330px;
      height: 300px;
    }
	</style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server" />
            <script type="text/javascript" language="javascript">
                var divElem = 'AlertDiv';
                var messageElem = 'AlertMessage';
                Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckStatus);
                function CheckStatus(sender, args)
                {
                  var prm = Sys.WebForms.PageRequestManager.getInstance();
                  if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'CancelRefresh') {
                     prm.abortPostBack();
                  }
                  else if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
                     args.set_cancel(true);
                     ActivateAlertDiv('visible', 'Still working on previous request.');
                 }
                  else if (!prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
                     ActivateAlertDiv('visible', 'Processing....');
                  }
                }
                function ActivateAlertDiv(visString, msg)
                {
                     var adiv = $get(divElem);
                     var aspan = $get(messageElem);
                     adiv.style.visibility = visString;
                     aspan.innerHTML = msg;
                }
            </script>
            <div class="Container" >
            <asp:UpdatePanel  ID="UpdatePanel1" UpdateMode="Conditional" runat="Server"  >
                <ContentTemplate>
                    <asp:Panel ID="Panel1" runat="server" GroupingText="UpdatePanel" 
                    CssClass="UpdatePanelStyle">
                        Last update: 
                        <%=DateTime.Now.ToString() %>.
                        <asp:Button runat="server" ID="RefreshButton" Text="Refresh"
                            OnClick="ButtonClick_Handler" />
                        <div id="AlertDiv" class="AlertStyle">
                        <span id="AlertMessage"></span> &nbsp;&nbsp;&nbsp;&nbsp;
                        <asp:LinkButton ID="CancelRefresh" runat="server">cancel</asp:LinkButton>
                        </div>                        
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            </div>
        </div>
    </form>
</body>
</html>


표시: