私は非常に有名な問題のように思えます。私のupdatepanelは非同期ポストバックの代わりに完全なポストバックを起動します。UpdatePanelはasyncpostbackの代わりに完全なポストバックを返します
HTML::
通常のソリューションは...を使用すると、動的に私が行っているが、私はまだ代わりに私の非同期ポストバックのフルポストバックを取得IDを追加、すべてのコントロールを与えることです。ここのコードです
<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>
興味深い部分は、以下のようなものであるの背後にあるC#コード(法PlayerItems_ItemDataBound)、次のとおりです。
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);
だから、私は実際にAsyncPostBackTrを追加しますItemCommandイベントを登録する必要があります。このコンテキストメニューで項目をクリックすると何が起こるのでしょうか、完全なポストバックが起こっています。
私はChildrenAsTriggersプロパティを使用せずにプレイしようとしています。また、AsyncPostBackTriggerコードを上下に移動しています。
ありがとうございます! ラース
Urh ..私が望んでいたものではありません。 ありがとうございました!私は本当に感謝しています! :-) –
素晴らしい情報! =) –
大変ありがとうございました! UpdatePanel1.Update(); – GPMorgan