【问题标题】:ASP .NET datalist does not recognize item in ItemDataBound eventASP .NET 数据列表无法识别 ItemDataBound 事件中的项目
【发布时间】: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() 通过主键返回单行数据集,此处未引发异常

标签: c# asp.net


【解决方案1】:

嗯,有点解决了。我仍然不知道问题出在哪里,但是在 datalist 被数据绑定之后,在不同的函数中使用 foreach 循环遍历 datalist 会给我想要的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2013-11-12
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多