ArgumentOutOfRangeException:索引超出范围

时间:2013-12-18 04:06:39

标签: asp.net c#-4.0 arraylist

我有两种方法,一种将值存储在arraylist中,即Button_1Click()。另一种方法NextClick()从arraylist中检索数据并将其存储到文本框中。 我得到一个超出界限的数组索引错误:

  

ArgumentOutOfRangeException:索引超出范围。一定是   非负面且小于集合的大小

ArrayList list = new ArrayList();
int i = 0;
protected void Button1_Click(object sender, EventArgs e)
{
    OleDbConnection conn = new OleDbConnection();
    OleDbDataReader dReader;
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
        @"data source=D:\asp\data\test.mdb;";
    conn.Open();
    OleDbCommand cmd = new OleDbCommand("SELECT * FROM D", conn);
    dReader = cmd.ExecuteReader();

    while (dReader.Read())
    {
        String temp = dReader[1].ToString();
        list.Add(temp);
        temp = dReader[2].ToString();
        list.Add(temp);

    }

    dReader.Close();
    conn.Close();
}
protected void next_Click(object sender, EventArgs e)
{

    Carname.Text = list[i] as String;
    i++;
}

2 个答案:

答案 0 :(得分:1)

看起来好友,每次按下任何一个按钮,这一位都会执行:

ArrayList list = new ArrayList();
int i = 0;

这意味着当您单击按钮时,它们将始终返回其原始状态。你可以自己试试 - >在任何一条线上放置一个断点,然后按下按钮。

答案 1 :(得分:0)

我修改了我的button1_click方法并使用了一个列表框。现在它有效!

while (dReader.Read())
    {
        ListBox1.Items.Add(dReader[1].ToString()+""+dReader[2].ToString());

    }