se han topado con lo que parece ser un problema muy famoso: Mi UpdatePanel dispara una devolución de datos completa en lugar de una devolución de datos asincrónica. La solución normal es dar a todos los controles se agrega dinámicamente un documento de identidad, lo que he hecho, pero aún así obtener una devolución de datos completa en lugar de mi devolución de datos asincrónica ...UpdatePanel da plena devolución de datos en lugar de asyncpostback
Aquí está el código:
HTML:
<asp:UpdatePanel ID="ItemsUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
<Triggers>
</Triggers>
<ContentTemplate>
<asp:ListView ID="PlayerItems" runat="server" GroupItemCount="5"
onitemdatabound="PlayerItems_ItemDataBound">
<LayoutTemplate>
... Listview stuff ...
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
la parte interesante es el código C# detrás (PlayerItems_ItemDataBound método), que es como la siguiente:
ImageButton imgBtn = new ImageButton();
imgBtn.ID = "itemBtn";
imgBtn.Width = Unit.Pixel(30);
imgBtn.ImageUrl = "~/Images/Game/Items/" + myItem.ItemImageUrl;
ContextMenu menu = new ContextMenu();
menu.BoundControls.Add(imgBtn);
menu.ItemCommand += new CommandEventHandler(menu_ItemCommand);
menu.AutoHide = true;
menu.RolloverColor = Color.Gray;
menu.ID = "MenuMenu";
Panel panel = (Panel)(e.Item.FindControl("ItemPanel"));
panel.Controls.Add(imgBtn);
panel.Controls.Add(menu);
AsyncPostBackTrigger trig = new AsyncPostBackTrigger();
trig.ControlID = menu.UniqueID;
trig.EventName = "ItemCommand";
ItemsUpdatePanel.Triggers.Add(trig);
Así que, en realidad agrego una AsyncPostBackTr igger al menú, por lo que el evento ItemCommand debe registrarse. Lo que ocurre cuando hago clic en un elemento en este menú contextual, es una transacción completa.
he estado tratando de jugar con la propiedad ChildrenAsTriggers sin ayuda. También he estado moviendo el código AsyncPostBackTrigger hacia arriba y hacia abajo, también sin ayuda.
Muchas gracias de antemano ..! Lars
Urh ... No era lo que esperaba ... ¡Pero así es como se hace! ¡Muchas gracias! ¡Estoy realmente agradecido! :-) –
¡Gran información! =) –
¡Muchas gracias por esto, pateándome! UpdatePanel1.Update(); – GPMorgan