Despoleta uma actualização do UpdatePanel por um controlo que está em diferentes espaços de 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?3 answers
De http://msdn.microsoft.com/en-us/library/system.web.ui.asyncpostbacktrigger.aspx
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: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.
UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger()
{
ControlID = DropDown1.UniqueID,
EventName = "SelectedIndexChanged", // this may be optional
});
No código atrás do ficheiro, você deve ser capaz de fazer:
ScriptManager.RegisterAsyncPostBackControl(dropdown1);
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.