2010-04-06 45 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 - 这不一定非要是数据项。它也可以是标题项目或页脚项目。