Класс Sys.WebForms.PageRequestManager
Обновлен: Ноябрь 2007
Управляет обновлением серверных элементов управления UpdatePanel обозревателя при частичном обновлении страницы. Кроме того, определяет свойства, события и методы, которые можно использовать для настройки веб-страницы с помощью клиентского сценария.
Пространство имен:Sys.WebForms
Наследование: отсутствует
var prm = Sys.WebForms.PageRequestManager.getInstance();
Конструктор
Напрямую новый экземпляр класса PageRequestManager не создается. Вместо этого экземпляр создается при включенной частичной отрисовки страниц. Чтобы получить экземпляра класса PageRequestManager следует вызвать метод getInstance.
Элементы
Имя |
Описание |
---|---|
Инициализирует новый экземпляр Класс 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 (значение по умолчанию), то для элемента управления 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>