• Microsoft .NET
  • ASP.NET
  • Создание серверных элементов управления во время выполнения с помощью модулей HTTP

ASP.NET AJAX: Отключение пользовательского интерфейса во время выполнения частичного постбэка - Активируем элемент пользовательского интерфейса, вызвавшего выполнение частичного постбэка

ОГЛАВЛЕНИЕ

Активируем элемент пользовательского интерфейса, вызвавшего выполнение частичного постбэка

PageRequestManager вызывает свое событие endRequestпри завершении выполнения частичного постбэка независимо от того, был ли  частичный постбэк успешно завершен, завершился ошибкой, или же был отменен либо прекращен пользовательским действием. Поэтому следующим шагом должно быть восстановление работоспособности элемента пользовательского интерфейса в обработчике события endRequest.

К сожалению, обработчику события endRequest не передается ссылка на элемент управления, вызвавшего выполение частичного постбэка. Вследствие этого, нам нужно сохранить эту информацию в переменной страничного уровня. Следующий скрипт JavaScript демонстрирует реализацию данной функциональности. Данной переменной - uiId - присваивается значение атрибута id того элемента управления, который вызвал выполнение частичного постбэка в обработчике события beginRequest. Далее она используется в обработчике события endRequest для получения ссылки на элемент и устанавливает его свойство disabled в значении false ("Ложь").

var uiId = '';

function PageRequestManager_beginRequest(sender, args)
{
   var postbackElem = args.get_postBackElement();
   uiId = postbackElem.id;
   postbackElem.disabled = true;
}


function PageRequestManager_endRequest(sender, args)
{
   $get(uiId).disabled = false;
}

Заметьте, что в обработчике события endRequest я использую функцию $get(id) для получения ссылки на элемент, указанный в ID значении переменнойuiId. Функция $get(id) является частью клиентского API в ASP.NET AJAX Framework. Оно служит кратчайшим путем к функции getElementById класса Sys.UI.DomElement.