2012-07-26 19 views
0

我寫出來分解成年份和月份,像這樣的鏈接列表父轉發:獲得從子中繼

<ul> 
    <li>2012</li> 
    <ul> 
    <li>July (12)</li> 
    <li>June (8)<li> 
    (etc) 
    </ul> 
    <li>2011</li> 
    <li>July (7)</li> 
    (etc) 
    </li> 
</ul> 

我使用兩個中繼器,一個多年(「repYears」)和嵌套幾個月的轉發器(「repMonths」)。在repYears的ItemDataBound事件期間,我會綁定repMonths。本數據來源於這些對象的一個​​泛型列表:

public class ArchiveItem 
{ 
    public ArchiveItem(long Id, string Month, int Year) 
    { 
     PostId = Id; 
     Month = Month; 
     Year = Year; 
    } 

    public long PostId { get; set; } 
    public string Month { get; set; } 
    public int Year { get; set; } 
} 

到目前爲止,我寫成功了年和月。

接下來我需要做的是計算每月的項目數(即從上面的HTML填充括號中的數字)。

爲此(在repMonths_ItemDataBound()期間)我需要知道repYears Repeater當前在哪一年。這會給我當前的月份和本年度,然後我可以算出點數。

我可以很容易地訪問當前月份,因爲我在ItemDataBound中,所以我可以使用e.Item.DataItem。

那麼我怎樣才能從父Repeater訪問當前的DataItem值?

回答

3

我不知道是否因爲您沒有顯示代碼而得到這個觀點。

如果你在孩子直放站ItemDataBound,你需要去的父項的DataItem一個參考,你可以使用NamingContainer屬性:

在孩子直放站ItemDataBound

var repeater = (Repeater)sender; 
var parentItem = (RepeaterItem)repeater.NamingContainer; 
var parentDataItem = parentItem.DataItem; 
+0

謝謝你完全一樣。 NamingContainer是謎題中缺少的一部分!只要按鈕讓我點擊它,我就會接受。 – 2012-07-26 15:55:04