Так как Вы используете Ajax ASP.NET, у Вас будет доступ к pageLoad
обработчик событий, который называют каждый раз сообщениями страницы назад, быть им полный или неравнодушный от UpdatePanel. Просто необходимо вставить функцию к странице, никакое присоединение не требуется.
function pageLoad(sender, args)
{
if (args.get_isPartialLoad())
{
//Specific code for partial postbacks can go in here.
}
}
Или Вы могли проверить живую функциональность последнего jQuery через on()
метод.
Sys.Application.add_load(initSomething);
function initSomething()
{
// will execute on load plus on every UpdatePanel postback
}
Вы могли использовать делегация события и jQuery. В основном сцепите события с контейнерами, а не каждым элементом и запросите event.target и выполните сценарий на основе этого.
Это обладает несколькими преимуществами в этом, Вы уменьшаете шум кода (никакая потребность снова переплести). Это также легче на памяти браузера (меньше событий, связанных в DOM.)
Быстрый пример здесь .
плагин jQuery для легкой делегации события.
P.S. я - 99%-я верная делегация, будет в ядре jQuery при следующем выпуске.
Используйте следующий код
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded);
function pageLoaded(sender, args) {
var updatedPanels = args.get_panelsUpdated();
// check if Main Panel was updated
for (idx = 0; idx < updatedPanels.length; idx++) {
if (updatedPanels[idx].id == "<%=upMain.ID %>") {
rebindEventsForMainPanel();
break;
}
}
}
<script type="text/javascript">
function pageLoad() {
if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
}
</script>
</ContentTemplate>
</asp:UpdatePanel>
В «Если» вы можете поставить код, который вам нужно выполнить каждый раз, когда UpdatePanel делает AsyncPostback.
Свяжите свои события с помощью нового «живого» метода jQuery. Он свяжет события со всеми вашими настоящими элементами, а также со всеми будущими элементами. Ча цзин! :)