#asp.net #jquery #asp.net-ajax #updatepanel #pagerequestmanager
#asp.net #jquery #asp.net-ajax #панель обновления #pagerequestmanager
Вопрос:
Это то, что я пытаюсь сделать —
Используя jQuery, когда документ готов, и если страница не является обратной отправкой, я выполняю обратную отправку вручную для updatepanel для извлечения данных из базы данных.
Пока панель обновления получает данные, я представляю процесс обновления, который я скрываю, когда завершается работа конкретной панели обновления. Я также хочу «ЗАБЛОКИРОВАТЬ» экран от любого взаимодействия. После загрузки данных у меня появляются дополнительные кнопки в форме, и я хочу заблокировать все в случае любой частичной обратной отправки.
Вот код:
$(document).ready(function ()
{
if(<% =(Not Page.isPostBack).ToString().ToLower() %>)
{
__doPostBack('upShipping');
}
}
function pageLoad() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
}
function BeginRequestHandler(sender, args)
{
$('.blur').css("display", "block");
if (args._postBackElement.id == 'upShipping') {
$get('divCalculating').className = 'Show';
}
}
function EndRequestHandler(sender, args)
{
$('.blur').css("display", "none");
if (sender._postBackSettings.sourceElement.id == 'upShipping')
{
$get('divCalculating').className = 'Hidden';
}
}
Если я не «НАЖИМАЮ» на экран, все работает отлично. Но если я просто щелкну в любом месте экрана, пока обновляется панель обновлений, «EndRequestHandler» не запустится, и я застряну с загрузочным gif и заблокированным экраном.
Я получаю следующую ошибку в консоли ошибок браузера: отправитель._postBackSettings.SourceElement не определен
Есть идеи?
Спасибо!
Ник
Ответ №1:
По какой-то причине sender._postBackSettings.sourceElement
продолжал возвращаться как NULL в EndRequestHandler
.
Я определил глобальную переменную, присвоил ей значение в BeginRequestHandler
и вместо этого проверил ее значение в EndRequestHandler
.
Это решило проблему.