我有这个数组:
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 ......?
答案 0 :(得分:2)
当您将数据绑定到列表类型控件(如转发器)时,它唯一关心的是您提供的对象是否实现System.Collections.IEnumerable接口。
如果您尝试在foreach循环中迭代二维数组,您会发现跨两个维度迭代每个项目,而不仅仅是一个维度。我还没有尝试将二维数组绑定到转发器,但我想,转发器会将数组中的所有元素扩展为一个平面列表。
当我使用转发器时,我通常使用RepeaterItem(Container)的DataItem属性而不是ItemIndex,因为我通常不关心索引是什么。也许那对你也有用。
您可能需要考虑将数据修改为比二维数组更结构化的内容。
答案 1 :(得分:0)
您的转发器是否有标头模板?
Items集合中充满了RepeaterItems - 它不一定是数据项。它也可以是标题项或页脚项。