Класс Sys.WebForms.PageRequestManager

Обновлен: Ноябрь 2007

Управляет обновлением серверных элементов управления UpdatePanel обозревателя при частичном обновлении страницы. Кроме того, определяет свойства, события и методы, которые можно использовать для настройки веб-страницы с помощью клиентского сценария.

Пространство имен:Sys.WebForms

Наследование: отсутствует

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

Конструктор

Напрямую новый экземпляр класса PageRequestManager не создается. Вместо этого экземпляр создается при включенной частичной отрисовки страниц. Чтобы получить экземпляра класса PageRequestManager следует вызвать метод getInstance.

Элементы

Имя

Описание

Конструктор 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 обработку обратной передачи.

Bb311028.alert_note(ru-ru,VS.90).gifПримечание.

В данном классе содержатся закрытые члены, которые предназначены для поддержки клиентских сценариев и не должны вызываться напрямую из кода приложения. Имена закрытых членов начинаются с символа подчеркивания ( _ ).

Заметки

Класс PageRequestManager управляет частичной отрисовкой страниц в обозревателе. На странице можно обновлять определенные области с помощью одного или нескольких элементов управления UpdatePanel или элемента управления ScriptManager.

Напрямую экземпляр класса PageRequestManager не создается. Класс PageRequestManager автоматически создается при включении частичной отрисовки страниц. К нему можно обращаться с помощью метода getInstance.

Класс PageRequestManager определяет события, которые можно использовать для настройки частичной отрисовки страниц. Клиентская инфраструктура поддерживает автоматическую привязку событий, наподобие автоматической привязки событий страницы на сервере к таким методам, как Page_Load. В следующей таблице приведен список доступных клиентских событий и сценариев, в которых их можно обрабатывать. События перечислены в таблице в том порядке, в котором они вызываются классом PageRequestManager.

Событие PageRequestManager

Описание

initializeRequest

Возникает перед началом обработки асинхронного запроса. Это событие используется для отмены обратной передачи.

beginRequest

Возникает перед началом обработки асинхронной обратной передачи и ее отправкой на сервер. Это событие используется для установки заголовков запросов или для запуска анимации, означающей что выполняется обработка страницы.

pageLoading

Возникает после получения ответа от сервера на асинхронную обратную передачу, но до обновления содержимого страницы. С помощью этого события можно реализовать пользовательский эффект перехода для обновленного содержимого.

pageLoaded

Возникает после обновления всего содержимого на странице в результате выполнения либо синхронной, либо асинхронной обратной передачи. С помощью этого события можно реализовать пользовательский эффект перехода для обновленного содержимого.

endRequest

Возникает после окончания асинхронной обратной передачи и возврата элемента управления обозревателю. Это событие используется для предоставления уведомлений пользователям или для регистрации ошибок.

Если страница содержит хотя бы один элемент управления UpdatePanel и в элементе управления ScriptManager свойство SupportsPartialRendering имеет значение true (значение по умолчанию), то для элемента управления ScriptManager регистрируется библиотека JavaScript, где содержится определение класса PageRequestManager, и она становится доступной на странице.

Пример

В следующем примере показано использование события 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>

См. также

Ссылки

ScriptManager

UpdatePanel