Sys.WebForms.PageRequestManager クラス
更新 : 2007 年 11 月
ブラウザでのサーバー UpdatePanel コントロールの部分ページ更新を管理します。また、クライアント スクリプトを使用する Web ページのカスタマイズで使用できるプロパティ、イベント、およびメソッドを定義します。
名前空間 :Sys.WebForms
継承 : なし
var prm = Sys.WebForms.PageRequestManager.getInstance();
コンストラクタ
PageRequestManager クラスの新しいインスタンスは直接作成しません。代わりに、部分ページ レンダリングが有効な場合にインスタンスを使用できます。PageRequestManager クラスのインスタンスを取得するには、getInstance メソッドを呼び出します。
メンバ
名前 |
説明 |
---|---|
Sys.WebForms.PageRequestManager クラス の新しいインスタンスを初期化します。 |
|
非同期ポストバックの処理が開始され、ポストバック要求がサーバーへ送信される前に発生します。 |
|
非同期ポストバックが完了し、コントロールがブラウザに戻った後に発生します。 |
|
非同期ポストバックの初期化中に発生します。 |
|
同期または非同期ポストバックの結果として、ページ上のすべてのコンテンツが更新された後に発生します。 |
|
サーバーから非同期ポストバックへの応答を受信した後、ページ上のコンテンツが更新される前に発生します。 |
|
非同期ポストバックの結果として発生するすべての更新を停止します。 |
|
ECMAScript (JavaScript) リソースを解放し、イベントを切り離します。 |
|
ページの PageRequestManager クラスのインスタンスを返します。 |
|
PageRequestManager オブジェクトがポストバックの処理中かどうかを示す値を返します。 |
メモ : |
---|
このクラスには、クライアントスクリプト インフラストラクチャをサポートするプライベート メンバが含まれています。独自に作成したコードから直接使用するためのものではありません。プライベート メンバ名の先頭にはアンダースコア ( _ ) が付きます。 |
解説
PageRequestManager クラスは、ブラウザでの部分ページ レンダリングを管理します。1 つ以上の UpdatePanel コントロールと 1 つの ScriptManager コントロールを使用して、ページ上の領域を更新できます。
PageRequestManager のインスタンスは直接作成しません。部分ページ レンダリングが有効な場合、PageRequestManager クラスのインスタンスを自動的に使用できます。このクラスには、getInstance メソッドを使用してアクセスできます。
PageRequestManager クラスは、ページの部分ページ レンダリングのカスタマイズに使用できるイベントを定義します。クライアント インフラストラクチャは、サーバー ページ イベントが Page_Load などのメソッドに自動的に連結される方法と似ている自動イベント連結をサポートしています。使用可能なクライアント イベントと、それらを処理可能なシナリオを次の表に示します。イベントは、PageRequestManager クラスに呼び出される順番で表に示されます。
PageRequestManager イベント |
説明 |
---|---|
initializeRequest |
非同期要求処理を開始する前に発生します。このイベントを使用して、ポストバックをキャンセルできます。 |
beginRequest |
非同期ポストバックの処理が開始され、ポストバックがサーバーに送信される前に発生します。このイベントを使用して、要求ヘッダーを設定したり、ページが処理中であることを示すアニメーションを開始したりできます。 |
pageLoading |
サーバーから非同期ポストバックへの応答を受信した後、ページ上のコンテンツが更新される前に発生します。このイベントを使用すると、更新されたコンテンツにカスタム遷移効果を適用できます。 |
pageLoaded |
同期または非同期ポストバックの結果として、ページ上のすべてのコンテンツが更新された後に発生します。このイベントを使用すると、更新されたコンテンツにカスタム遷移効果を適用できます。 |
endRequest |
非同期ポストバックが完了し、コントロールがブラウザに戻った後に発生します。このイベントは、エラーのユーザーへの通知や記録に使用します。 |
ページに少なくとも 1 つの UpdatePanel コントロールが含まれていて、ScriptManager コントロールの SupportsPartialRendering 値が true (既定値) の場合、PageRequestManager クラスを定義する JavaScript ライブラリが ScriptManager コントロールに登録され、ページで使用できます。
使用例
beginRequest イベントを使用して、非同期ポストバック中に進捗状況を示す通知を表示する方法を次の例に示します。getInstance メソッドが呼び出され、現在の PageRequestManager インスタンスを取得します。スクリプトは、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>