Обработчик событий для метода UpdatePanel.Update () - PullRequest
1 голос
/ 28 октября 2011

У меня есть две UpdatePanel в моей веб-форме. Оба UpdateMode="Conditional". Асинхронный триггер в событии UpdatePanel1 fire UpdatePanel2.Update().

Я бы хотел в UpdatePanel2 всякий раз, когда вызывается его метод update (), Делать что-то (например, динамически загружать пользовательский элемент управления на основе некоторых критериев).

Как я могу это сделать?

Редактировать: Это упрощенная версия моих потребностей. Метод UpdatePanel2.Update () может быть запущен из любого места, как MasterPage и .... doing some stuff это не просто загрузка пользовательского элемента управления

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Проверьте этот ответ: Как узнать, какая UpdatePanel вызывает частичный PostBack?

Также вы можете использовать такой подход без реализации собственного элемента управления UpdatePanel, унаследованного от существующего с отражением:

private static PropertyInfo RequiresUpdateProperty;

protected void Page_Init(object sender, EventArgs e)
{
    RequiresUpdateProperty = RequiresUpdateProperty?? typeof(UpdatePanel).GetProperty("RequiresUpdate", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
}

protected void Page_PreRender(object sender, EventArgs e)
{
    if ((bool)RequiresUpdateProperty.GetValue(UpdatePanel2, null))
    {
        // gotcha!
    }
}

Имейте в виду, что proeprty RequUpdate возвращает значение false, когда вы устанавливаете Conditional UpdateMode и обратную передачу, вызванную дочерним элементом управления UpdatePanel, который не добавляется в коллекцию Triggers.

P.S. приведенный выше код требует уровня безопасности доступа к коду FullTrust, поскольку он использует отражение

0 голосов
/ 28 октября 2011

Ну, вы уже ответили на свой вопрос. Это вы сами решите, когда updatepanel2 будет обновляться, так что вы будете указывать код для динамического добавления элементов управления. Что касается события, фреймворк не предоставляет событие, которое запускается для каждого обновления панели обновления:).

Пример:

UpdatePanel2.Update();

поскольку вы вызывали update до этого утверждения, вы добавите все свои элементы управления, как показано ниже

TextBox tbox = new TextBox();
tBox.ID = "txtbox1";
UpdatePanel2.Controls.Add(tBox);
UpdatePanel2.Update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...