ASP .NET datalist无法识别ItemDataBound事件中的项目

时间:2015-12-01 12:47:53

标签: c# asp.net

我有一个datalist,我正在尝试将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";
        }
    }
}

当我尝试运行它时,我收到错误

  

“指数超出范围。必须是非负数且小于规模   收集。“

我发现项目索引等于数据列表的项目数,我认为这意味着该项目尚未创建,但是在创建项目和数据绑定后,ItemDataBound事件是否应该触发?有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

嗯,有点解决了。我仍然不知道问题是什么,但是在数据主义者数据绑定之后,在不同函数中使用foreach循环遍历数据主义者,这给了我期望的效果。