Обновить все панели обновления на странице? - PullRequest
4 голосов
/ 11 сентября 2008

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

Возможно ли это?

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

Чтобы уточнить, у меня есть панель обновлений в одном пользовательском элементе управления, остальные панели обновлений находятся в других пользовательских элементах управления, поэтому они не могут видеть друг друга, пока я не выставлю некоторые пользовательские свойства и не использую 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 основных пользовательских элемента управления, которые были полны панелей обновления, эти элементы управления были видны на главной странице, поэтому я добавил туда метод обновления, который назывался «Обновление» для этих трех элементов.

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

Edit:

AARRGGGG!

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

Ответы [ 5 ]

3 голосов
/ 11 сентября 2008

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

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

2 голосов
/ 11 сентября 2008

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

0 голосов
/ 16 мая 2014

переводит обе панели просмотра в третий класс докладчика. Затем пусть класс докладчика контролирует оба представления. например:

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

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

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

0 голосов
/ 11 сентября 2008

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

0 голосов
/ 11 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...