Я столкнулся с очень известной проблемой: моя панель обновлений запускает полную обратную передачу вместо асинхронной обратной передачи. Обычное решение - дать всем элементам управления, которые вы добавляете динамически, идентификатор, что я и сделал, но я все равно получаю полную обратную передачу вместо моей асинхронной обратной передачи ...
Вот код:
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);
Итак, я фактически добавляю AsyncPostBackTrigger в меню, чтобы событие ItemCommand было зарегистрировано. Когда я щелкаю элемент в этом контекстном меню, происходит полная обратная передача.
Я пытался поиграть со свойством ChildrenAsTriggers без посторонней помощи. Я также перемещал код AsyncPostBackTrigger вверх и вниз, также без помощи.
Заранее большое спасибо ..!
Lars