Обновить родительскую панель обновления из пользовательского контроля - PullRequest
1 голос
/ 03 августа 2009

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

Ответы [ 3 ]

3 голосов
/ 04 августа 2009

Phairoh - это правильно , что ваша кнопка должна успешно вызвать PostBack.

На обновление UpdatePanel влияют три вещи:

  1. Свойство UpdateMode - принимает два возможных значения: Always и Conditional.
    • Если установлено значение Always, то любая обратная передача на странице приведет к обновлению UpdatePanel.
    • Если он установлен на Conditional, то UpdatePanel обновляется только при вызове метода Update UpdatePanel или когда один из триггеров UpdatePanel выполняет обратную передачу.
  2. Triggers proroperty - Определяет, какие элементы управления приведут к обновлению UpdatePanel, когда UpdateMode установлен в Conditional.
  3. Свойство ChildrenAsTriggers - это логическое значение, которое определяет, будут ли дочерние элементы управления UpdatePanel автоматически считаться триггерами без необходимости добавления в коллекцию Triggers.

Поскольку ваша кнопка находится в UserControl, будет нелегко добавить элемент управления в коллекцию Triggers или заставить кнопку вызывать метод Update на UpdatePanel, который не находится внутри UserControl.

Поскольку ваша UpdatePanel содержит UserControl, лучше всего включить ChildrenAsTriggers. Если это не работает, попробуйте установить для свойства UpdateMode значение Always. Если это по-прежнему не работает, то Phairoh , вероятно, правильно и ваша кнопка не отправляет обратно.

2 голосов
/ 03 июня 2013

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

    var scriptManager = ScriptManager.GetCurrent(Page);
    if (scriptManager != null) 
        scriptManager.RegisterPostBackControl(SomeControlID);
0 голосов
/ 03 августа 2009

Вы уверены, что ваши кнопки на вашем пользовательском элементе управления пытаются выполнить обратную передачу? Некоторое время я не использовал панели обновления (и я бы порекомендовал избегать их), но если я правильно вспомню, они будут обновляться всякий раз, когда внутри них выполняется обратная передача. Это означает, что ваши кнопки должны быть кнопками Asp: (или аналогичными элементами управления, вызывающими обратную передачу) и не иметь какого-либо javascript-кода, который не позволял бы их действиям продолжаться (например, возвращать false).

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