2012-05-28 59 views
3

我試圖在處理OnItemDataBound事件時獲取中繼器中的項目數。我試圖實現它很簡單;我正在嘗試隱藏某個標籤上的最後一項在一箇中繼器內。目前,我正在接入ItemIndexItems.Count,但因爲它在OnItemDataBound期間,索引和計數一起遞增。OnItemDataBound獲取中繼器中的項目數

這裏是我到目前爲止有:

Label myLabel = e.Item.FindControl<Label>("MyLabel"); 
if (myLabel != null) 
{ 
    // as the item index is zero, I'll need to check against the collection minus 1? 
    bool isLastItem = e.item.ItemIndex < (((Repeater)sender).Items.Count - 1); 
    myLabel.Visible = !isLastItem; 
} 

我知道我能投的DataSource到被束縛的數據項的集合,但是OnItemDataBound事件處理程序正在跨多箇中繼器使用,所以我需要一些更通用的東西。

回答

2

你可以做線沿線的東西,將其具有Visible爲false默認:

if (e.Item.ItemIndex > 0) 
{ 
    var previousItem = ((Repeater)sender).Items[e.Item.ItemIndex - 1]; 
    var previousLabel = previousItem.FindControl<Label>("MyLabel"); 
    if (previousLabel != null) 
    { 
     previousLabel.Visible = true; 
    } 
} 

我不肯定這是否會工作 - 我不知道你可以訪問repeater.Items直到我看到了你的代碼 - 但看起來貌似合理。

+0

這會工作,如果我試圖隱藏「第一」項上的項目,但我想隱藏在「最後」。 :) – Richard

+0

@Richard Yup ...默認情況下將'Visible'設置爲'false',然後這段代碼在除最後一項之外的所有項中都將其設置爲「true」。 (在每次綁定時,它會找到_previous_標籤並顯示它。) – Rawling

+0

ahh是的,當然,呃。這是一個可能的解決方案,謝謝。 – Richard

相關問題