Периодическое обновление экрана и заголовка веб-страницы при помощи ASP.NET AJAX - Вызов веб-сервиса и обновления экрана и заголовка
ОГЛАВЛЕНИЕ
Вызов веб-сервиса и обновления экрана и заголовка
Следующая функция JavaScript - UpdateOpenWorkItemCount, асинхронно вызывает веб-сервис GetOpenWorkOrders и указывает на то, что функции GetOpenWorkOrdersOnSuccess и GetOpenWorkOrdersOnFailed должны быть вызваны в случае успеха или ошибки соответственно.
function UpdateOpenWorkItemCount() {
// Call the GetOpenWorkOrders Web Service
WebsiteServices.GetOpenWorkOrders(GetOpenWorkOrdersOnSuccess, GetOpenWorkOrdersOnFailed);
}
Текст "3 open work items" или какое-либо другое число заданий, будет отображен при помощи элемента управления HyperLink WorkItemCountLink на мастер-странице, при нажатии он перенесет пользователя на страницу WorkItems.aspx.
<asp:HyperLink runat="server" ID="WorkItemCountLink" NavigateUrl="~/WorkItems.aspx" Text=""></asp:HyperLink>
Элемент HyperLink обрабатывает элемент <a>, на который можно программно сослаться посредством DOM и его настройки свойства innerHTML таким образом, чтобы оно изменяло текст ссылки. Функция GetOpenWorkOrdersOnSuccess обновляет данную ссылку вместе с заголовком страницы. Данные области обновляются только в случае, если было возвращено значение с веб-сервиса и оно больше, чем 0. (Вспомните, что если веб-сервис будет вызван анонимным пользователем, то будет возвращено значение -1. В таком случае нам не надо обновлять экран или заголовок.) Вот код функции GetOpenWorkOrdersOnSuccess:
var originalTitle = document.title;
function GetOpenWorkOrdersOnSuccess(results) {
// Отображение результатов в workItemCount
if (results >= 0) {
var workItemCount = document.getElementById('<%=WorkItemCountLink.ClientID %>');
if (workItemCount) {
workItemCount.innerHTML = results + ' open work items';
if (results == 0)
workItemCount.style.color = 'White';
else
workItemCount.style.color = 'Yellow';
}
// Обновление заголовка страницы
document.title = originalTitle + ' (' + results + ')';
}
}