Sys.WebForms.PageRequestManager 类

更新:2007 年 11 月

管理浏览器中服务器 UpdatePanel 控件的部分页更新。此外,还定义一些属性、事件和方法,用以通过客户端脚本对网页进行自定义。

命名空间:Sys.WebForms

**继承:**无

var prm = Sys.WebForms.PageRequestManager.getInstance();

构造函数

无需直接创建 PageRequestManager 类的新实例。在启用部分页呈现后会提供一个实例。调用 getInstance 方法可以获取 PageRequestManager 类的实例。

成员

名称

说明

Sys.WebForms.PageRequestManager 构造函数

初始化 Sys.WebForms.PageRequestManager 类 的新实例。

Sys.WebForms.PageRequestManager beginRequest 事件

在异步回发处理启动,并且回发请求发送到服务器之前引发。

Sys.WebForms.PageRequestManager endRequest 事件

在异步回发完成,并且控制权返回到浏览器之后引发。

Sys.WebForms.PageRequestManager initializeRequest 事件

在异步回发的初始化期间引发。

Sys.WebForms.PageRequestManager pageLoaded 事件

在同步或异步回发引起页上所有内容刷新之后引发。

Sys.WebForms.PageRequestManager pageLoading 事件

在收到服务器对异步回发的响应之后、页上任何内容更新之前引发。

Sys.WebForms.PageRequestManager abortPostBack 方法

停止所有因异步回发而导致的更新。

Sys.WebForms.PageRequestManager dispose 方法

释放 ECMAScript (JavaScript) 资源并分离事件。

Sys.WebForms.PageRequestManager getInstance 方法

返回页面的 PageRequestManager 类的实例。

Sys.WebForms.PageRequestManager isInAsyncPostBack 属性

返回一个值,该值指示 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 实例。beginRequestendRequest 事件的处理程序中包含脚本。

<%@ 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>

请参见

参考

ScriptManager

UpdatePanel