2011-06-29 43 views
1

如何從內置中繼器獲得外置中繼器物品。我的外部中繼器數據源有3個項目。我的內部中繼器數據源有7個項目。當我在內部中繼器內迭代時,如何從外部中繼器獲取項目?從內置中繼器獲取外置中繼器物品

我的外部中繼器數據源是一個通用列表。此列表中的一項是一天(數字格式)。我的內部中繼器是列表中的int,1到7。我需要一些邏輯,以便當我迭代天數列表時(在內部).....如果在迭代當前記錄中外層的值爲2(因此存在匹配),我會打印一些內容。

我希望是有道理的......

感謝提供任何幫助或提示。

回答

2

我通常做的只是捕捉數據綁定上的外部項目並將其保存到頁面上的變量。在這裏我有兩個連續的中繼器。我從第一個轉發器保存一年,然後在綁定第二個轉發器時可以引用它。

protected void repAnnualReport_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     CurrentYear = int.Parse(((Literal)e.Item.FindControl("litLicenseYear")).Text); 

     Repeater repLicenseLengths = (Repeater)e.Item.FindControl("repLicenseLengths"); 
     repLicenseLengths.DataSource = GetLicenseLengths(CurrentYear); 
     repLicenseLengths.DataBind(); 
    } 

    protected void repLicenseLengths_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     CurrentLength = int.Parse(((Literal)e.Item.FindControl("litLicenseLength")).Text) * 365; 

     Repeater repMonthlyReport = (Repeater)e.Item.FindControl("repMonthlyReport"); 
     repMonthlyReport.DataSource = new object[12]; 
     repMonthlyReport.DataBind(); 
    } 

如果你的綁定到第一中繼器的類列表或可查詢,您可以訪問這樣的個人項目在第一線。

SaveCurrentItem = (CurrentItemClass)e.Item.DataItem; 
+0

這是一個很好的方法。稍後保存對象以供使用比嘗試走路對象樹來找到它好得多。 – Jay

+0

感謝您的簡單解決方案... – obautista

0

如果你知道.NET控件從你內心的中繼到外部中繼器的層次結構,可以使用NamingContainer屬性來找到你的方式。

protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 

      Repeater parentRepeater; 

      // e.Item: the item/header/whatever template that kicked off this event 
      // e.Item.NamingContainer: the owner of the item template (the innner repeater) 
      // e.Item.NamingContainer.NamingContainer: the outer item template 
      // e.Item.NamingContainer.NamingContainer.NamingContainer: the outer Repeater 

      parentRepeater = (Repeater)e.Item.NamingContainer.NamingContainer.NamingContainer; 

     } 
    } 

否則,如果您不確定結構或不想這樣固定的參考,可以循環自己的方式通過NamingContainer,直到你打Repeater型的第二次東西。