2009-07-27 20 views
0

我想在這裏正確設置嵌套控件列表的數據源。如何在回發上嵌套控件列表上設置數據源

基本點子:

我有一個asp:repeater項目。裏面有一個DropDownList和一個BulletedList加上一個Button。

我想從Repeater中的選定行添加到DropDownList中的選定項目添加到選定行的BulletedList中。

到目前爲止,我設法用OnItemDataBound和OnClick來做到這一點,這非常好。問題是OnClick被觸發 OnItemDataBdound。爲了查看我在BulletedList的數據源中添加的項目,我必須刷新頁面。

我嘗試這樣做:

((BulletedList)src.FindControl("sharedPlanDomains")).Items.Clear(); 

然後

((BulletedList)src.FindControl("sharedPlanDomains")).Datasource = myobject; 
((BulletedList)src.FindControl("sharedPlanDomains")).DataBind(); 

但它似乎不工作。

((BulletedList)src.FindControl("sharedPlanDomains")).DomainsAssociated.ForEach(f => list.Items.Add(new ListItem { Text = f.Name })); 

也不管用。

有任何建議嗎?

[編輯:澄清]

說我有這樣的結構:

  • 託管計劃:I-Perso
    域:在下拉列表] [按鈕:大專]
    關聯的域:

    • google.com
    • google2.com
  • 託管計劃:I-Mense 域:將DropDownList] [按鈕:大專] 關聯的域:

    • google3.com

讓我們舉個例子,我點擊第一個下拉列表並選擇域名google4.com,然後google4.com將被添加到項目符號列表的數據源中排i-Perso。

我想在這裏做的是關聯域和計劃。如果只有1 - 1的關係,我會做得更好,但它是1 - 多重關係的關係。

+0

對不起,我不明白這個問題的措詞。你想要在單擊事件上綁定項目,還是想要嵌套的數據結構(如標準的嵌套中繼器場景)? – David 2009-07-27 16:50:02

回答

0

您可以將內部列表視圖的數據源綁定綁定到你的外列表視圖物品的屬性。但是,要做到這一點,內部列表視圖在項目模板的外部列表視圖

請參閱下面的代碼並注意內部列表視圖的DataSource='<%# Eval("Labels_color") %>屬性。

<asp:ListView ID="ListView_Orp_Results" runat="server" ItemPlaceholderID="itemPlaceholder"> 
<LayoutTemplate> 
    <div id="outer_result_container"> 
     <div id="itemPlaceholder" /> 
    </div> 
</LayoutTemplate> 
<ItemTemplate> 
    <div id="result_photo">...</div> 
    <div id="result_category">...</div> 
    <div id="result_detector">...</div> 
    <div id="inner_result_container" runat="server"> 
     <asp:ListView ID="ListView_inner_results" runat="server" ItemPlaceholderID="itemPlaceholder" DataSource='<%# Eval("Labels_color") %>'> 
      <LayoutTemplate> 
       <div id="outer_result_container" runat="server" > 
        <div id="itemPlaceholder" runat="server"> </div> 
       </div> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <div id="inner_result_photo">... 
       </div> 
       <div id="inner_result_category">... 
       </div> 
       <div id="inner_result_categoryID">... 
       </div> 
      </ItemTemplate> 
     </asp:ListView> 
    </div> 
    </div> 
</ItemTemplate> 
</asp:ListView> 

這樣你就不需要從代碼債券嵌套列表視圖後面。只要綁定主列表視圖,和所有內部的ListView將自動綁定到綁定對象

關於RUNAT =「服務器」,它是asp.net控件必需屬性的Labels_texture財產。基本上,這個屬性意味着asp.net將解析標籤並創建一個相應的對象。

大多數情況下,你不需要它html元素(div,p,...)但在某些情況下,您可能希望它在後面的代碼中操作相應的對象。