Буквально на днях столкнулся с этой проблемой. Полная боль в заднице, на которую нужно было найти ответ, поэтому я подведу итог здесь.
Событие DOMReady больше не запускается после завершения вызова AJAX. Что я сделал, так это добавил этот код на страницу.
// handlers for msajax
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function (sender, args) {
try {
args.get_request().set_userContext(args.get_postBackElement().id);
$(window).trigger("beginMsAjaxRequest", [sender, args, args.get_postBackElement().id]);
} catch (e) { }
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
try {
if (args.get_error() == undefined) {
var sName = args.get_response().get_webRequest().get_userContext();
$(window).trigger("endMsAjaxRequest", [sender, args, sName]);
}
} catch (e) { }
});
По сути, он расширяет встроенные события .NET AJAX для работы с jQuery. Однако он вернет id
из UpdatePanel
или что-то еще, что инициировало запрос AJAX, позволяя вам настроить таргетинг только на элементы управления внутри него, чтобы ваш плагин мог его обновить.
Пример такой..
$(window).on("endMsAjaxRequest", function(event, sender, args, sName) {
// sname is the id of the UpdatePanel, so..
$('.my-dropdown', '#' + sName).theDropDownPluginInit();
});
Надеюсь, это хорошо объясняет...
РЕДАКТИРОВАТЬ:
Вы также можете использовать событие begin, чтобы сделать что-нибудь, например, скрыть элементы или отключить их или что-то еще...
$(window).on("beginMsAjaxRequest", function(event, sender, args, sName) {
// sname is the id of the UpdatePanel, so..
$('#' + sName).fadeTo(300, 0.6); // fade the UpdatePanel to 60% opacity
});
person
Michael Coxon
schedule
26.02.2014
UpdatePanel
..?? - person Mayank Pathak   schedule 26.02.2014