Sys.WebForms.PageRequestManager 클래스
업데이트: 2007년 11월
브라우저에서 서버 UpdatePanel 컨트롤의 부분 페이지 업데이트를 관리합니다. 또한 클라이언트 스크립트를 사용하여 웹 페이지를 사용자 지정하는 데 사용할 수 있는 속성, 이벤트 및 메서드를 정의합니다.
네임스페이스:Sys.WebForms
상속: 없음
var prm = Sys.WebForms.PageRequestManager.getInstance();
생성자
PageRequestManager 클래스의 새 인스턴스는 직접 만들지 않습니다. 대신 부분 페이지 렌더링을 사용하는 경우에 인스턴스를 사용할 수 있습니다. getInstance 메서드를 호출하여 PageRequestManager 클래스의 인스턴스를 가져올 수 있습니다.
멤버
이름 |
설명 |
---|---|
Sys.WebForms.PageRequestManager 클래스의 새 인스턴스를 초기화합니다. |
|
비동기 포스트백 처리 작업이 시작되고 포스트백 요청이 서버에 전달되기 전에 발생합니다. |
|
비동기 포스트백이 끝나고 제어가 브라우저에 반환된 후에 발생합니다. |
|
비동기 포스트백을 초기화하는 동안 발생합니다. |
|
동기 또는 비동기 포스트백의 결과로 페이지의 모든 콘텐츠가 새로 고쳐진 후에 발생합니다. |
|
비동기 포스트백에 대한 서버의 응답이 수신된 후 페이지의 콘텐츠가 업데이트되기 전에 발생합니다. |
|
비동기 포스트백의 결과로 발생하는 모든 업데이트를 중지합니다. |
|
ECMAScript(JavaScript) 리소스를 해제하고 이벤트를 분리합니다. |
|
페이지에 대한 PageRequestManager 클래스의 인스턴스를 반환합니다. |
|
PageRequestManager 개체에서 포스트백을 처리하고 있는지 여부를 나타내는 값을 반환합니다. |
참고
이 클래스는 클라이언트 스크립트 인프라를 지원하는 전용 멤버를 포함하고 있으며 사용자 코드에서 직접 사용할 수 없습니다. 전용 멤버 이름은 밑줄(_)로 시작합니다.
설명
PageRequestManager 클래스는 브라우저에서 부분 페이지 렌더링을 관리합니다. 하나 이상의 UpdatePanel 컨트롤과 ScriptManager 컨트롤을 사용하여 페이지의 영역을 업데이트할 수 있습니다.
PageRequestManager의 인스턴스는 직접 만들지 않습니다. 부분 페이지 렌더링을 사용하는 경우 자동으로 PageRequestManager 클래스의 인스턴스를 사용할 수 있습니다. getInstance 메서드를 통해 이 인스턴스에 액세스할 수 있습니다.
PageRequestManager 클래스는 페이지의 부분 페이지 렌더링을 사용자 지정하는 데 사용할 수 있는 이벤트를 정의합니다. 클라이언트 인프라에서는 서버 페이지 이벤트가 Page_Load와 같은 메서드에 자동으로 바인딩되는 방식과 비슷한 자동 이벤트 바인딩을 지원합니다. 다음 표에서는 사용할 수 있는 클라이언트 이벤트 및 각 이벤트를 처리하는 시나리오를 보여 줍니다. 각 이벤트는 PageRequestManager 클래스에서 호출되는 순서대로 나와 있습니다.
PageRequestManager 이벤트 |
설명 |
---|---|
initializeRequest |
비동기 요청 처리 작업이 시작되기 전에 발생합니다. 이 이벤트를 사용하여 포스트백을 취소할 수 있습니다. |
beginRequest |
비동기 포스트백 처리 작업이 시작되고 포스트백이 서버에 전달되기 전에 발생합니다. 이 이벤트를 사용하여 요청 헤더를 설정하거나, 페이지에서 요청이 처리되고 있음을 나타내는 애니메이션을 시작할 수 있습니다. |
pageLoading |
비동기 포스트백에 대한 서버의 응답이 수신된 후 페이지의 콘텐츠가 업데이트되기 전에 발생합니다. 이 이벤트를 사용하여 업데이트된 콘텐츠에 사용자 지정 전환 효과를 제공할 수 있습니다. |
pageLoaded |
동기 또는 비동기 포스트백의 결과로 페이지의 모든 콘텐츠가 새로 고쳐진 후에 발생합니다. 이 이벤트를 사용하여 업데이트된 콘텐츠에 사용자 지정 전환 효과를 제공할 수 있습니다. |
endRequest |
비동기 포스트백이 끝나고 제어가 브라우저에 반환된 후에 발생합니다. 이 이벤트를 사용하여 사용자에게 알림을 제공하거나 오류를 기록할 수 있습니다. |
페이지에 UpdatePanel 컨트롤이 적어도 하나 이상 포함되어 있고 ScriptManager 컨트롤의 SupportsPartialRendering 값이 true(기본값)이면 PageRequestManager 클래스를 정의하는 JavaScript 라이브러리가 ScriptManager 컨트롤에 등록되어 페이지에서 사용할 수 있습니다.
예제
다음 예제에서는 beginRequest 이벤트를 사용하여 비동기 포스트백 중에 진행률 알림을 표시하는 방법을 보여 줍니다. 이 예제에서는 현재 PageRequestManager 인스턴스를 가져오기 위해 getInstance 메서드가 호출됩니다. 또한 beginRequest 및 endRequest 이벤트에 대한 처리기에 스크립트가 포함되어 있습니다.
<%@ 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 ProcessClick_Handler(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(2000);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>PageRequestManager beginRequest Example</title>
<style type="text/css">
body {
font-family: Tahoma;
}
div.AlertStyle
{
background-color: #FFC080;
top: 95%;
left: 1%;
height: 20px;
width: 270px;
position: absolute;
visibility: hidden;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args)
{
var elem = args.get_postBackElement();
ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');
}
function EndRequestHandler(sender, args)
{
ActivateAlertDiv('hidden', 'AlertDiv', '');
}
function ActivateAlertDiv(visstring, elem, msg)
{
var adiv = $get(elem);
adiv.style.visibility = visstring;
adiv.innerHTML = msg;
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" GroupingText="Update Panel">
Last update:
<%= DateTime.Now.ToString()%>.
<br />
<asp:Button runat="server" ID="Button1" Text="Process 1" OnClick="ProcessClick_Handler" />
<asp:Button runat="server" ID="Button2" Text="Process 2" OnClick="ProcessClick_Handler" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<div id="AlertDiv" class="AlertStyle">
</div>
</div>
</form>
</body>
</html>
<%@ 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 ProcessClick_Handler(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(2000);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>PageRequestManager beginRequest Example</title>
<style type="text/css">
body {
font-family: Tahoma;
}
div.AlertStyle
{
background-color: #FFC080;
top: 95%;
left: 1%;
height: 20px;
width: 270px;
position: absolute;
visibility: hidden;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args)
{
var elem = args.get_postBackElement();
ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');
}
function EndRequestHandler(sender, args)
{
ActivateAlertDiv('hidden', 'AlertDiv', '');
}
function ActivateAlertDiv(visstring, elem, msg)
{
var adiv = $get(elem);
adiv.style.visibility = visstring;
adiv.innerHTML = msg;
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" GroupingText="Update Panel">
Last update:
<%= DateTime.Now.ToString()%>.
<br />
<asp:Button runat="server" ID="Button1" Text="Process 1" OnClick="ProcessClick_Handler" />
<asp:Button runat="server" ID="Button2" Text="Process 2" OnClick="ProcessClick_Handler" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<div id="AlertDiv" class="AlertStyle">
</div>
</div>
</form>
</body>
</html>