c# asp.net ajax updatepanel nested

c# - Anidado UpdatePanel: ¿Por qué ChildrenAsTriggers no tiene ningún efecto?



asp.net ajax (3)

Dado un ejemplo simple con dos paneles de actualización anidados. Están anidados, y cada uno tiene una etiqueta que se llena con la hora actual en el código subyacente. No entiendo por qué ChildrenAsTriggers="true" - ¿La propiedad en el UpdatePanel externo no tiene ningún efecto? Cuando presiono el botón ''Actualizar panel anidado'' -, el tiempo en el Panel de actualización padre no se actualiza. Pero por lo que entiendo la propiedad, debería ser:

<asp:ScriptManager ID="ScriptManager1" runat="server" onasyncpostbackerror="ScriptManager1_AsyncPostBackError"> </asp:ScriptManager> <asp:Button ID="ButtonUpdate" runat="server" Text="Update Panel 1" style="margin-top: 15px" onclick="ButtonUpdate_Click" /> <asp:Button ID="ButtonUpdateNestedPanel" runat="server" Text="Update Nested Panel" style="margin-top: 15px" onclick="ButtonUpdateNestedPanel_Click" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" /> </Triggers> <ContentTemplate> <asp:Label ID="Label1" runat="server" /> <asp:UpdatePanel ID="UpdatePanelNested" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" /> </Triggers> <ContentTemplate> <asp:Label ID="LabelNested" runat="server" /> </ContentTemplate> </asp:UpdatePanel> </ContentTemplate> </asp:UpdatePanel>

Thx para cualquier tipps! sl3dg3

ps: código detrás:

protected void ButtonUpdate_Click(object sender, EventArgs e) { LabelNested.Text = DateTime.Now.ToString(); Label1.Text = DateTime.Now.ToString(); } protected void ButtonUpdateNestedPanel_Click(object sender, EventArgs e) { LabelNested.Text = DateTime.Now.ToString(); Label1.Text = DateTime.Now.ToString(); }


ChildrenAsTriggers = "true" Establezca la propiedad ChildrenAsTriggers en verdadero si desea que las devoluciones de controles secundarios inmediatos del control UpdatePanel provoquen una actualización del contenido del panel. Los controles secundarios de los controles UpdatePanel anidados no causarán una actualización del contenido del control padre UpdatePanel a menos que llame al método Update explícitamente o defina los controles secundarios como desencadenantes.


Cuando la propiedad ChildrenAsTriggers se establece en true y cualquier control secundario del control UpdatePanel provoca una devolución de datos. Los controles secundarios de los controles UpdatePanel anidados no causan una actualización del control externo UpdatePanel a menos que estén explícitamente definidos como disparadores para el panel principal. http://forums.asp.net/t/1422425.aspx/1

y esto debería ser como ...

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" /> </Triggers> ...... ......


Creo que, para ver el efecto deseado en acción, debería agregar sus botones como elementos secundarios en la plantilla de contenido. La propiedad "ChildrenAsTriggers" solo se aplica a hijos directos del bloque "ContentTemplate".