Despoleta uma actualização do UpdatePanel por um controlo que está em diferentes espaços de conteúdo

Tenho uma página com dois parceiros. Um tem um DropDown e outro UpdatePanel com conteúdo.

Como É Que posso activar a actualização do UpdatePanel pelo evento seleccionado da lista, quando estiverem em diferentes espaços de apresentação?

o seguinte não funcionaria uma vez que o UpdatePanel1 não sabe sobre o DropDown1:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"  ChildrenAsTriggers="true">
    <ContentTemplate>
        Some content that needs to be updated here...
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="DropDown1" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

uma maneira é fazer um método de página ajax que seria chamado por javascript na página quando o item do DropDown é selecionado. Então em Código atrás, dentro do método da página, ligue para UpdatePanel1.Actualizacao().

Há uma alternativa mais fácil?

Author: dev.e.loper, 2009-01-06

3 answers

De http://msdn.microsoft.com/en-us/library/system.web.ui.asyncpostbacktrigger.aspx

O controlo que o Asyncpostbacktrigger references must estar no mesmo recipiente de nomenclatura que o painel de actualização para o qual é disparar. Gatilhos que são baseados em controlos noutros recipientes de denominação não são suportados.

A solução consiste em utilizar o carácter único do controlo que a o gatilho está a referir-se. Infelizmente o UniqueID não é qualificado até que o Controle tenha sido adicionado ao seu pai (e seu pai) foi adicionado ao seu pai, até ao topo da árvore de controlo). No seu código atrás, tente:
UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger()
{
    ControlID = DropDown1.UniqueID,
    EventName = "SelectedIndexChanged", // this may be optional
});
 22
Author: Crescent Fresh, 2012-01-05 00:14:13

No código atrás do ficheiro, você deve ser capaz de fazer:

ScriptManager.RegisterAsyncPostBackControl(dropdown1);
 3
Author: Robert C. Barth, 2009-01-06 17:08:47

Você pode fazer valer a actualização de qualquer um dos UpdatePanels de página pelo método call updatePanel1.Update() do lado do servidor. Por exemplo, durante a actualização updatePanel1 em button1.Click call updatePanel2.Update() e ambos os painéis serão actualizados.

 2
Author: user629910, 2012-11-23 00:50:02