Ich habe in, was ein sehr berühmtes Problem scheint: Mein Updatepanel feuert eine vollständige Postback statt einer asynchronen Postback. Die normale Lösung ist es, alle Kontrollen geben Sie fügen dynamisch eine ID, die ich getan habe, aber ich habe noch ein volles Postbacks statt meinen asynchronen Postbacks bekommen ...Updatepanel gibt vollen Postback anstelle von asyncpostback
Hier ist der Code:
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>
der interessante Teil ist der C# -Code hinter (Methode PlayerItems_ItemDataBound), die wie folgt lautet:
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);
Also, ich eine AsyncPostBackTr tatsächlich hinzufügen Klicken Sie auf das Menü, damit das ItemCommand-Ereignis registriert werden soll. Was passiert, wenn ich auf einen Eintrag in diesem Kontextmenu klicke, ist ein voller Postback passiert.
Ich habe versucht, mit der ChildrenAsTriggers Eigenschaft ohne Hilfe zu spielen. Ich habe den AsyncPostBackTrigger-Code auch ohne Hilfe nach oben und unten verschoben.
Vielen Dank im Voraus ..! Lars
Urh .. Nicht, was ich gehofft hatte .. Aber so ist es gemacht! Vielen Dank! Ich bin wirklich dankbar! :-) –
Großartige Informationen! =) –
Vielen Dank dafür, mich selbst zu treten! UpdatePanel1.Update(); – GPMorgan