Как сохранить JavaScript после частичной обратной передачи UpdatePanel
В нем много кода, поэтому я хочу кратко объяснить проблему на словах. У меня есть главная страница, которая включает в себя все ссылки на файлы JavaScript и есть страницы, которые используют главную страницу. Я использую панель обновлений на своих страницах, и внутри панели обновлений есть несколько форм, в том числе одна из которых имеет возможность обратной передачи (т.е. выпадающий список). Проблема в том, что, когда состояние изменяется и происходит частичная обратная передача, формы, которые имеют некоторые возможности и эффекты из-за этих javascript-сценариев, теряют всю функциональность. Любая помощь будет оценена.
1 ответ
Это связано с тем, что после частичной публикации на панели "Обновление" необходимо повторно инициализировать JavaScript. Вот общий пример
<script type="text/javascript">
// if you use jQuery, you can load them when dom is read.
$(document).ready(function () {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
// Place here the first init
});
function InitializeRequest(sender, args) {
}
function EndRequest(sender, args) {
// after update occur on UpdatePanel re-init what you need
}
</script>
Относительные вопросы:
Asp.Net UpdatePanel в Gridview Jquery DatePicker
Как получить Id панель обновления, которая инициализирует запрос в javascript
После Net 4 вы также можете просто использовать pageLoad
Функция похожа на функцию OnLoad, но обрабатывается asp.net и вызывается при первой загрузке страницы, но также вызывается после каждого обновления ajax.
function pageLoad()
{
// init here your javascript
// This is called when the page load first time
// and called again each time you have an Update inside an UpdatePanel
}
ссылка: http://msdn.microsoft.com/en-us/library/bb386417(v=vs.100).aspx