System.IndexOutOfRangeException

时间:2011-02-24 22:16:09

标签: c# asp.net

我正在尝试显示复选框列表中每个复选框的工具提示。我需要来自数据库的描述。虽然描述很长,但我得到System.IndexOutOfRangeException。有谁知道如何解决这一问题?请帮忙!

int i = 0; 
foreach (ListItem l in this.agile_factors.Items) {
    while (dr.Read())
    {
        string description = dr["Description"].ToString();
        l.Attributes["title"] = description;

    }
    i++; 
}
conn.Close();

2 个答案:

答案 0 :(得分:1)

在尝试使用它之前检查列的存在是否简单?

foreach (ListItem l in this.agile_factors.Items) {
    while (dr.Read())
    {
        if (dr["Description"] != null)
        {
            string description = dr["Description"].ToString();
            l.Attributes["title"] = description;
        }
    }
    i++; 
}

答案 1 :(得分:0)

这不会起作用。

1)while循环将在foreach循环的第一次迭代中读取整个datareader。第一个列表项的l.Attributes["title"]仅等于上一个记录的值,那么在下一个foreach次迭代中读取数据引导程序时应该得到错误。虽然我不认为这是“指数超出范围。”

2)索引超出范围可能是因为datareader没有列,其中包含您在其中使用的名称之一。

打开调试器应该很快清除它。