Sys.WebForms.InitializeRequestEventArgs 클래스

이벤트 처리기에 인수 정보를 전달하기 위해 Sys.WebForms.PageRequestManager 클래스의 initializeRequest 이벤트에서 사용되는 클래스를 제공합니다.

네임스페이스: Sys.WebForms

상속: Sys.CancelEventArgs

var args = new Sys.WebForms.InitializeRequestEventArgs(request, postBackElement, updatePanelsToUpdate);

Name

설명

Sys.WebForms.InitializeRequestEventArgs 생성자

InitializeRequestEventArgs 클래스의 새 인스턴스를 초기화합니다.

Name

설명

Sys.WebForms.InitializeRequestEventArgs postBackElement 속성

비동기 포스트백을 시작한 포스트백 요소를 가져옵니다.

Sys.WebForms.InitializeRequestEventArgs request 속성

현재 포스트백을 나타내는 요청 개체를 가져옵니다.

Sys.WebForms.InitializeRequestEventArgs.updatePanelsToUpdate 속성

클라이언트가 요청한 대로 콘텐츠를 다시 렌더링해야 하는 UpdatePanel 컨트롤에 대한 UniqueID 값의 목록을 가져오거나 설정합니다.

참고참고

이 클래스는 클라이언트 스크립트 인프라를 지원하는 전용 멤버를 포함하고 있으며 사용자 코드에서 직접 사용할 수 없습니다. 전용 멤버 이름은 밑줄(_)로 시작합니다.

이벤트 처리기는 request 속성을 사용하여 요청 개체에 액세스하고 postBackElement 속성을 사용하여 포스트백을 발생시킨 요소를 확인할 수 있습니다.

PageRequestManager 클래스의 initializeRequest 이벤트는 비동기 요청 처리 작업이 시작되기 전에 발생합니다.

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


표시: