2009-03-08 9 views
0

У меня есть следующая структура ASPX:Обновление элемента управления вне UpdatePanel

<UpdatePanel id="OutsidePanel" UpdateMode="Conditional"> 
    <div runat="server" id="myDiv"> 
    <UpdatePanel id="InsidePanel" UpdateMode="Conditional">  

    <asp:ImageButton that causes a postback.. /> 
    </UpdatePanel> 
    </div> 
</UpdatePanel> 

Когда IMAGEBUTTON нажата, на стороне сервера, я изменить класс myDiv. Он не обновляется. Я предполагаю, что это потому, что div находится вне внутренней UpdatePanel. Как я могу заставить его обновить?

ответ

0

Не могли бы вы просто вызвать Update метод «OutsidePanel» UpdatePanel на сервере, когда Imagebutton в «InsidePanel» вызывает постбэк? Или же, настроить ImageButton клики события как триггер для «OutsidePanel»

Согласно MSDN

Если свойство UpdateMode установлен в Условным, содержания элемента управления UpdatePanel обновляется в следующих обстоятельствах :

  • Когда вы вызываете метод Update элемента управления UpdatePanel явно.

  • Когда элемент управления UpdatePanel находится внутри другого элемента управления UpdatePanel , а родительская панель обновляется .

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

  • Когда свойство ChildrenAsTriggers установлено в true, а ребенок управление элементом управления UpdatePanel вызывает обратную передачу. Элементы управления от детей Вложенные элементы управления UpdatePanel не вызывают обновление внешнего управления UpdatePanel, если только они не являются , явно заданными как триггеры.

+0

Если вы постоянно обновляете внешнюю панель при обновлении внутренней панели, я не вижу большого смысла в использовании внутренней. Я мог видеть значение в этом, если только некоторые триггеры с внутренней панели обновили внешнюю панель. – tvanfosson

+0

Интересно. Где я могу назвать обновление OutsidePanel(). Есть ли для этого обработчик событий? – DotnetDude

+0

tvanfosson - это фрагмент полного кода. Фактический код имеет несколько внутренних панелей обновления внутри OutsideUpdatePanel. Таким образом, я не могу совмещать обе панели. Вы все же обнаруживаете интересный Q. Как бы я выборочно обновлял только некоторые элементы управления за пределами, вызывающие обратную передачу? – DotnetDude

0

Если вы обновляете серверную сторону класса, тогда да. Внутренняя панель обновления перезаписывается и передается клиенту, но внешняя панель обновления не заменяется. Все, что находится за пределами обновляемой панели, не будет заменено при возврате обратного вызова AJAX. Возможно, вам стоит рассмотреть возможность добавления некоторого javascript, который обновляет div, когда результат возвращается как простое решение для изменения класса.

+0

Thanks.I думаю, в этой ситуации, я могу уйти с раствором JS. Тем не менее, мне любопытно узнать, есть ли серверное решение для этого? – DotnetDude

Смежные вопросы