JavaScript, когда AjaxControlToolkit TabContainer готов? - PullRequest
3 голосов
/ 23 июня 2011

У меня есть страница с элементом управления TabContainer (из Ajax Control Toolkit), и я переключаю видимость некоторых элементов на странице в зависимости от выбранной в данный момент вкладки.Я делал это в обработчике событий для OnClientActiveTabChanged (который отлично работает), но обнаружил, что после обратной передачи он оставляет страницу в неправильном состоянии.Я попытался добавить некоторый код в обработчик событий document.ready, чтобы получить индекс, но когда я делаю следующее:

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});

... я получаю исключение нулевой ссылки на свойство .control.Есть ли способ подключить клиентское «готовое» событие для TabContainer?

Я не знаком с жизненным циклом события с обычными элементами DOM (кажется, что должно быть общее событие загрузки, но я его не вижу).Если нет события, которое может быть легко обработано, может показаться, что может работать добавление UpdatePanel с UpdateMode = Conditional и AsyncPostBackTrigger, который указывает на скрытую кнопку с обработчиком события onclick, который получит индекс активной вкладки- но это похоже на множество движущихся вещей для чего-то, что я ожидаю, что DOM уже выставит.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2014

Слишком поздно, чтобы быть полезным, но у меня возникла та же проблема, и я нашел обходной путь. Измени свой код

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});

до

function pageLoad() {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
};

Объяснение здесь: http://encosia.com/document-ready-and-pageload-are-not-the-same/

По сути, событие готовности jQuery "немного раннее", и TabContainer еще не инициализирован, тогда как pageLoad на стороне клиента ASP.Net достаточно поздно, и TabContainer уже был инициализирован.

0 голосов
/ 12 октября 2012

Отметьте этот пост , чтобы сохранить выбор вкладки во время обратных передач. Это работает для обычных постбэков, сохраняя индекс активной вкладки в скрытой переменной. Несмотря на то, что он написан для плагина JQuery в размещенной ссылке, концепция должна быть такой же, то есть сохранять индекс выбранной вкладки.

...