2010-04-06 46 views
0

我有這樣的陣列:結合的二維陣列,以中繼器 - 錯誤

string[,] productData = new string[5,7]; 

我其綁定到一箇中繼器和一個呼叫的方法等:

<img src="<%# getPhoto1WithReplace(Container.ItemIndex) %>" 

其等定義:

public String getPhoto1WithReplace(Object itemIndex) 
{ 
    int intItemIndex = Int32.Parse(itemIndex.ToString()); 
    if (productData[intItemIndex, 3] != null) 
     return this.ResolveUrl(productData[intItemIndex, 3].ToString()); 
    else return String.Empty; 
} 

我不明白爲什麼它的ItemIndex調用getPhoto1WithReplace爲5 我的數組有5個指標:0,1,2,3 ,4,所以HOW Container.ItemIndex可以是5 ...?

回答

1

將數據綁定到列表類型的控件(如中繼器)時,它唯一關心的是您提供的對象是否實現了System.Collections.IEnumerable接口。

如果您嘗試遍歷foreach循環中的二維數組,您會發現遍歷兩個維度中的每個項目,而不僅僅是一個維度。我還沒有嘗試將二維數組綁定到中繼器,但是我會想象中繼器會將數組中的所有元素都拉伸到一個平面列表中。

當我使用中繼器時,我通常使用RepeaterItem(Container)的DataItem屬性而不是ItemIndex,因爲我通常不關心索引是什麼。也許這也適用於你。

您可能不得不考慮將數據修改爲比二維數組更結構的東西。

0

你有一個你的中繼器的頭模板?

Items集合充滿了RepeaterItems - 這不一定非要是數據項。它也可以是標題項目或頁腳項目。