У меня серьезные проблемы с использованием UpdatePanels на веб-сайте. Проблема в том, что когда я использую ScriptManager, весь клиентский JavaScript, который был активен при первоначальной загрузке страницы, теряется, как только панель обновления отправляет обратно.
Вот что я пытаюсь сделать ...
У меня есть несколько элементов управления календарем .net на одной странице, каждый из которых находится на своей собственной панели обновлений. Календари изначально скрыты, пока вы не щелкнете в соответствующем текстовом поле (также на панели обновлений), после чего появится календарь, чтобы вы могли выбрать дату. Они отлично работают, пока вы действительно не измените дату (отправьте обратно), после чего календари больше не всплывают, когда вы нажимаете в текстовых полях, JavaScript «onfocus» теряется.
Посмотрев в Google на то, что кажется часами, я могу полу-работать, динамически добавив атрибут «onfocus» в TextBox и зарегистрировав скрипт запуска в ScriptManager, когда календарь отправляет назад.
Пример:
TextBox1.Attributes.Add("onfocus", "document.getElementById('searchArrivalDateCalendarDiv').style.display = 'block';")
ScriptManager.RegisterStartupScript(Page, GetType(Page), "StopTxtClick", "$(document).ready(function(){$('.txtArrivalDate').click(function(event){event.stopPropagation(); $('div.searchArrivalDateCalendarDiv').show(); });});", True)
Это кажется непрактичным, особенно когда я представляю главную страницу. Я собираюсь в конечном итоге перерегистрировать чертовски много скриптов запуска.
Должен быть более легкий путь?