【发布时间】:2015-12-03 15:01:11
【问题描述】:
我有一个数据列表,我正在尝试将一个 css 类应用于一些项目内的面板,如下所示:
protected void DataListProducts_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header)
{
ProductsService service = new ProductsService();
DataTable dt = service.GetProduct(DataListProducts.DataKeys[e.Item.ItemIndex].ToString()).Tables[0];
if (((int)dt.Rows[0]["Quantity"]) <= 0)
{
Panel overlay = (Panel)DataListProducts.Items[e.Item.ItemIndex].FindControl("overlay");
overlay.CssClass = "soldOut";
}
}
}
当我尝试运行它时,我得到了错误
"索引超出范围。必须为非负数且小于大小 集合。”
我发现item index等于datalist的item count,我认为这意味着item还没有被创建,但是ItemDataBound事件不应该在item被创建并绑定后触发吗?有人可以向我解释一下吗?
【问题讨论】:
-
我已经尝试过了,但它只是选择了前一个项目,或者如果该项目是第一个项目,则会给出另一个错误..
-
是在
service.GetProduct(...)或其他行引发异常。你也可以分享一下这个方法吗? -
service.GetProuct() 通过主键返回单行数据集,此处未引发异常