2010-07-23 4 views
2

У меня есть страница asp.net, которая использует и обновляет панель и включает в себя некоторые javascript через тег {script src = abc.js}. Я попытался загрузить мой javascript, используя как $ (document) .ready, так и $ (window) .load. Оба огня на начальной нагрузке, но не запускаются на обратной панели обновления.jQuery вне панели обновления asp.net

Есть ли что-нибудь, что я могу подключить на стороне клиента, который будет срабатывать независимо от панели обновления? Я знаю, что могу добавить сервер сценариев, но я в идеале хочу сделать это на всех клиентах и ​​подключиться к тому, что когда-либо понадобится в первый раз.

ответ

3

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

// Javascript 
function InitializeScripts() 
{ 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_pageLoaded(YourJavascriptFunctionYouWantToRun); 
} 

PageRequestManager будет вызывать яваскрипт функции, когда UpdatePanel обновляется.

Я использовал это в прошлом, чтобы вызвать триггер, когда UpdatePanel выпустил обновление из-за таймера. Когда обновление будет завершено, сценарии будут автоматически запускаться для обновления других элементов управления на основе данных, которые были отображены.

Для получения дополнительной информации см. Это MSDN article.

+0

я добавил немного проверки типа в том случае, если страница не содержит обновление панель. if (typeof (Sys)! = "Undefined") { var manager = Sys.WebForms.PageRequestManager.getInstance(); manager.add_pageLoaded (setup); } прочее { setup(); } }); Отлично работает! – andleer

0

Вставить эти строки на вашего яваскрипт тега

function foo() 
{ 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 
} 
function endRequestHandler(sender, args) 
{ 
    // Do your stuff 
    alert('Update Panel routine is now complete'); 
} 

Затем, поместите это на вас тело тега

<body onload="foo()"> 
+1

Будьте осторожны при публикации копий и вставных шаблонов/дословных ответов на несколько вопросов, они, как правило, помечены сообществом сообществом. Если вы делаете это, это обычно означает, что вопросы являются дубликатами, поэтому вместо этого отмечайте их как таковые. – Kev

Смежные вопросы