Обновление части страницы через определенные интервалы времени

Иногда может потребоваться обновлять содержимое элемента управления UpdatePanel не в ответ на действия пользователя, а через определенные интервалы времени. Мне запомнился один сетевой чат, посвященный теме ASP.NET, которым я руководил несколько лет тому назад.

Один из посетителей спросил, как можно использовать в страницах ASP.NET компонент Timer, который он нашел в Visual Studio. Я ответил на вопрос, объяснив суть модели клиент?сервер, и описал средства, которыми обладает JavaScript для организации временных задержек.

Теперь, обладая опытом работы с платформой ASP.NET AJAX в течение нескольких лет, я мог бы дать другой ответ. Компонент Timer, входящий в состав ASP.NET AJAX, переводит работу со связанными с ним методами JavaScript – window.setTimeout() и window.setInterval() – на уровень абстракции. Вы определяете длительность интервала (в миллисекундах), как того требуют методы JavaScript, и после этого через заданные интервалы времени начинает возникать событие Tick. Ниже приводится объявление элемента Timer, который генерирует событие Tick каждые пять секунд:
(asp:Timer Interval="5000" runat="server" /)

Теперь, с помощью этого таймера вы можете запускать обновление UpdatePanel всякий раз, когда возникает событие Tick, другими словами, – через регулярные интервалы времени.


Это может быть сделано программным способом, но, как обычно, существует и декларативный способ.

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

ControlID
Имя элемента управления, который запускает событие
EventName
Имя события, которое используется для запуска регенерации

Существует два режима обработки события:
AsyncPostBackTrigger
Обработка выполняется асинхронно – предпочтительный вариант
PostBackTrigger
Обработка выполняется синхронно – такого способа следует по возможности избегать

Для демонстрации использования таймера с элементом управления UpdatePanel мы воспользуемся компонентом Label из предыдущего примера для отображения текущего времени в элементе UpdatePanel. Это положение влечет за собой следующее: когда страница будет загружаться первый раз, компонент Label будет отображать текущее время.

Каждые пять секунд компонент Timer будет генерировать событие Tick, которое будет приводить к обновлению содержимого элемента управления UpdatePanel (это будет производиться автоматически, средствами ASP.NET AJAX).

Полный исходный текст этого примера приводится в примере 6.2.
Пример 6.2.


Обновление содержимого панели через заданные
интервалы времени
UpdatePanelTimer.aspx
<%@ Page Language="C#" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1?transitional.dtd">
ASP.NET AJAX

(body)
(asp:ScriptManager ID="ScriptManager1" runat="server")
(/asp:ScriptManager)
(asp:Timer ID="FiveSeconds" Interval="5000" runat="server" /)
(asp:UpdatePanel ID="UpdatePanel1" runat="server")

(asp:Label ID="CurrentTime" runat="server" /)


(asp:AsyncPostBackTrigger ControlID="FiveSeconds" EventName="Tick" /)


(/body)


Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Обновление части страницы
Отображение экранной заставки в период ожидания
Программное обновление части страницы через определенные интервалы времени
Создание обновляемой области страницы
Управление асинхронными запросами