读书人

C#winform中应用dataGridView出现“索

发布时间: 2012-10-09 10:21:45 作者: rapoo

C#winform中运用dataGridView出现“索引超出范围。必须为非负值并小于集合大小。”

C# code
int n = 0;                string sqlsign = "select count(*) from HouseHold,DetailAccount where HouseHold.HouseID = DetailAccount.HouseID and HouseHold.Area = '" + comboBox1.Text.ToString().Trim() + "'";                string sql = "select * from HouseHold,DetailAccount where HouseHold.HouseID = DetailAccount.HouseID and HouseHold.Area = '" + comboBox1.Text.ToString().Trim() + "'";                OleDbConnection conn = dbObj.GetConnection();                OleDbCommand comm = new OleDbCommand(sql, conn);                OleDbCommand commsign = new OleDbCommand(sqlsign, conn);                    conn.Open();                    n = (int)commsign.ExecuteScalar();                        comm.ExecuteNonQuery();                        OleDbDataAdapter da = new OleDbDataAdapter(comm);                        DataSet ds = new DataSet();                        da.Fill(ds, "HouseHold");                        for (int i = 0; i < n; i++)                        {                            dataGridView1.Rows[i].Cells["index_no"].Value = i+1;                            dataGridView1.Rows[i].Cells["HouseID"].Value = ds.Tables["HouseHold"].Rows[i][0].ToString();                            dataGridView1.Rows[i].Cells["theName"].Value = ds.Tables["HouseHold"].Rows[i][8].ToString();                            dataGridView1.Rows[i].Cells["theOwner"].Value = ds.Tables["HouseHold"].Rows[i][2].ToString();                            dataGridView1.Rows[i].Cells["Category"].Value = ds.Tables["HouseHold"].Rows[i][3].ToString();                            dataGridView1.Rows[i].Cells["Area"].Value = ds.Tables["HouseHold"].Rows[i][5].ToString();                            dataGridView1.Rows[i].Cells["Address"].Value = ds.Tables["HouseHold"].Rows[i][4].ToString();                          }



一直出现“索引超出范围。必须为非负值并小于集合大小。参数名为index。”dataGridView1的列是我自定义出来的,没有采用数据绑定,折腾了一天没折腾出来是啥原因,求助各位大虾啊!!

[解决办法]
访问越界,对[]的地方好好调试,还有Rows[i]是否越界,你有那么多行吗
[解决办法]
For 循环超出了你SQL导出来的列数
你可以
C# code
messagebox.show( dataGridView1.Rows.Count.ToString());
[解决办法]
先要添加行,才能对每个得进行操作
dataGridView1.Rows.Add()

读书人网 >C#

热点推荐