我遇到了一個似乎是非常着名的問題:我的updatepanel觸發完整回發而不是異步回發。正常的解決方案是讓所有的控制你動態地添加一個ID,我都做了,但我仍然得到一個完整的回傳,而不是我的異步回發...UpdatePanel給出了完整的回發,而不是asyncpostback
下面的代碼:
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>
有趣的部分是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 igger到菜單,所以ItemCommand事件應該被註冊。當我點擊這個上下文菜單中的項目時發生了什麼,是一個完整的回發事件。
我一直在嘗試與ChildrenAsTriggers屬性玩沒有幫助。我也一直在上下移動AsyncPostBackTrigger代碼,也沒有幫助。
非常感謝..! 拉爾斯
Urh ..不是我所希望的。 非常感謝!我真的很感激! :-) – 2010-11-30 22:16:25
偉大的信息! =) – 2012-07-18 06:34:54