2010-11-30 55 views
8

我遇到了一個似乎是非常着名的問題:我的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代碼,也沒有幫助。

非常感謝..! 拉爾斯

回答

8

AsyncPostBackTrigger文檔:

編程添加 AsyncPostBackTrigger控制不 支持。以編程方式 註冊回發控件,使用 RegisterAsyncPostBackControl方法 控件ScriptManager控件。然後調用 的Update方法控制UpdatePanel 控件回發時。

+0

Urh ..不是我所希望的。 非常感謝!我真的很感激! :-) – 2010-11-30 22:16:25

+0

偉大的信息! =) – 2012-07-18 06:34:54

29

我在UpdatePanel中的面板內的ListView中填充CheckBoxList時有相同的經驗。它通過在CheckBoxList中添加下列代碼來解決:

相關問題