我有两种方法,一种将值存储在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++;
}
答案 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());
}