Подтвердить что ты не робот

Как вызвать функцию javascript на стороне клиента после загрузки определенной UpdatePanel

Как можно вызвать метод javascript на стороне клиента после загрузки определенной панели обновления?

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) не работает для меня, потому что это срабатывает после того, как ЛЮБАЯ панель обновления завершит загрузку, и я не найду на стороне клиента способ найти то, что является

ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementID не работает для меня, так как это объект на стороне сервера, и я хочу, чтобы клиентская сторона

Структура ClientSide.Net должна знать, какой UpdatePanel она обновляет, чтобы обновить правильный контент. Наверняка есть способ подключиться к этому событию?

Любая помощь будет оценена по достоинству.

4b9b3361

Ответ 1

Вы можете подключить событие PageRequestManager.beginRequest и проверить BeginRequestEventArgs. postBackElement.

Обратите внимание, что это не дает вам UpdatePanel, но элемент управления внутри UpdatePanel. Это должно быть достаточно хорошо.

Изменить: Еще лучше, PageRequestManager.pageLoaded событие дает вам PageLoadedEventArgs.panelsUpdatedpanelsCreated).

Ответ 2

Спасибо - оба хорошие ответы. В конце я пошел с клиентской стороной script "pageloaded". Это довольно похоронили метод, который Google не раскрыл мне. Для тех, кто заинтересован, этот код работает с FireBug, чтобы дать хорошую демонстрацию метода PageLoaded для поиска обновленных панелей:

<script type="text/javascript">
        $(document).ready(function() {
            panelsLoaded = 1;
            Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
        });

        function PageLoaded(sender, args) {
            console.log("I have occured " + panelsLoaded++ + " times!");

            var panelsCreated = args.get_panelsCreated();
            for (var i = 0; i < panelsCreated.length; i++) {
                console.log("Panels Updating: " + panelsCreated[i].id);
            }

            var panelsUpdated = args.get_panelsUpdated();
            for (var i = 0; i < panelsUpdated.length; i++) {
                console.log("Panels Updating: " + panelsUpdated[i].id);
            }
        }
    </script>

Ответ 3

Это может быть ваше решение.

В коде для события UpdatePanel OnLoad зарегистрируйте запуск script.

string scriptText = "alert('Bar!');";

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "foo", scriptText, true);