更新: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 事件在异步回发过程中显示进度通知。该示例调用 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>
说明: