2011-10-31 37 views
2

我想要做的就是這個ChildRepeater正從ParentRepeater在代碼隱藏價值

 <asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ItemBound"> 
      <ItemTemplate> 
       <asp:Repeater ID="Repeater_SideMenu_Guides_Medlem" runat="server"> 
        <ItemTemplate> 
        </ItemTemplate> 
       </asp:Repeater> 
      </ItemTemplate> 
     </asp:Repeater> 

代碼隱藏

ParentRepeater.DataSource = CraftGuides.GetAllGroups(); 
ParentRepeater.DataBind(); 

protected void ItemBound(object sender, RepeaterItemEventArgs args) 
    { 
     if (args.Item.ItemType == ListItemType.Item) 
     { 
      Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater"); 
      childRepeater.DataSource = CraftGuides.GetGuidesByGroupID(Insert ID from Parent Here); 
      childRepeater.DataBind(); 
     } 
    } 

現在,事情是我不知道從一開始的ID父內部的孩子從數據庫中收集數據

+0

當你說「我不知道[如何從小孩內部的父母獲得ID'),你在說'ParentRepeater'嗎?如果是這樣,你的頁面上有多少箇中繼器?通常,我會直接引用'ParentRepeater'。 – jwiscarson

+0

我不確定你的意思。我需要從ParentRepeater獲取CraftGuides.GetAllGroups()中的對象的ID。如果這與你正在談論的是一樣的,那麼你可以舉個例子 –

回答

3

如果您有一個Group對象,可以使用以下內容:

var item = args.Item; 
var dataItem = item.DataItem as Group; 

然後,您可以輕鬆獲取組對象的ID並將其傳遞到GetGuidsByGroupID()

我喜歡使用as關鍵字,因爲如果轉換失敗,它將返回null。如果失敗,使用(Group)item.DataItem會引發異常。

+0

我不是很追隨你,你能舉一個例子,因爲我是新來的c#^^ –

+0

如果我理解你在評論中的說明以上,然後Digbyswift的例子是正確的,並且上面粘貼的C#代碼是您需要的。 – jwiscarson

+1

雖然我會補充說,我不喜歡'因爲'因爲Digbyswift喜歡它的原因。我寧願得到'NullReferenceException'而不是神奇地看到一個空的'Repeater'或者獲得遠離源的另一個異常。 – jwiscarson