Обновить все панели обновлений на странице?

У меня есть код, который изменяет значение, к которому привязаны несколько элементов управления в других панелях обновления. Когда срабатывает этот обработчик событий, я бы хотел, чтобы он принудительно обновил и другие панели обновления, чтобы они могли выполнить повторную привязку.

Это возможно?

Редактировать:

Чтобы уточнить, у меня есть панель обновлений в одном пользовательском элементе управления, другие панели обновлений находятся в других пользовательских элементах управления, поэтому они не могут видеть друг друга, если я не раскрываю некоторые настраиваемые свойства и не использую findControl и т. д. И т. Д.

Изменить снова:

Вот что я придумал:

public void Update()
{
    recursiveUpdate(this); 
}

private void recursiveUpdate(Control control)
{
    foreach (Control c in control.Controls)
    {
        if (c is UpdatePanel)
        {
            ((UpdatePanel)c).Update();
        }

        if (c.HasControls())
        {
            recursiveUpdate(c);
        }
    }
}

У меня было 3 основных пользовательских элемента управления, которые были заполнены панелями обновлений, эти элементы управления были видны на главной странице, поэтому я добавил туда метод Update, который вызывал обновление для этих трех.

В моем элементе управления запуском я просто привел this.Page к текущей странице и вызвал Update.

Редактировать:

ААРРГГГГ!

Пока панели обновления обновляются, он не вызывает Page_Load внутри субэлементов управления в них ... Что мне теперь делать!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
5 381
5

Ответы 5

Вы можете установить триггеры для событий на панели обновлений, которую хотите обновить, или вы можете явно указать updatepanel.update () в коде позади.

Как насчет регистрации PostBackTrigger (вместо AsyncPostBackTrigger), который будет обновлять каждую панель при возникновении определенного события.

Или добавьте триггер, который уже обновляет некоторые UpdatePanels, и в другие UpdatePanels.

Это хороший метод, если вы хотите обновить панель обновлений из клиентский Javascript.

Page.DataBind () запускает цикл привязки данных ко всем дочерним элементам управления. Это заставит Asp.Net переоценить выражения привязки для каждого элемента управления. Если этого недостаточно, вы можете добавить любую логику, которая, по вашему мнению, будет запущена в переопределение OnDataBinding или OnDataBound в ваших пользовательских элементах управления. Например, если вам нужно повторно выполнить событие Page_Load, вы можете просто вызвать его в своем переопределенном методе OnDataBound.

мгновенно передать обе панели представления третьему классу докладчика, а затем позволить классу докладчика управлять обоими представлениями. Например:

Вы могли бы просто пропустить то, что вам нужно, «средний класс» для выполнения своей работы, например, в вашем основном вы могли бы иметь;

PresenterClass.AttachInterface(mIOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(1);
PresenterClass.AttachInterface(mIOtherOrder);
PresenterClass.DoSomeCalulation();
PresenterClass.drawPanel(2);

каждое представление будет иметь свои собственные элементы управления. Так много разных способов сделать это ... в качестве альтернативы вы можете использовать средний класс для мгновенного создания обеих панелей, тогда в каждой из ваших панелей вы можете иметь «методы получения» для извлечения данных для обработки.

Другие вопросы по теме