将DataRow []数据添加到未绑定的DataGridView中的每一列?

时间:2013-06-05 17:38:08

标签: c# database arrays datagridview datarow

我正在尝试查询我的DataSet并在未绑定的DataGridView中显示结果。我觉得我的编程逻辑非常接近,但我不断收到错误ArgumentOutOfRange Exception. Index was out of range. Must be non-negative and less than the size of the collection.

我的代码段:

DataRow[] foundRows;

//Queries the Reservations table with the 'searchExpression' variable
foundRows = this.reservationMasterDataSet.Tables["Reservations"].Select(searchExpression);

//If there is at least one record found...
if (foundRows.Length > 0)
{
    //Used to count our row indexes
    int i = 0;

    //Populate the DataGridView with the queried response
    foreach (DataRow row in foundRows)
        {
            //Used to count our column indexes
            for (int j = 0; j < reservationMasterDataSet.Tables["Reservations"].Columns.Count; j++)
            {
                //THIS LINE IS THROWING AN EXCEPTION
                dataGridView1.Rows[i].Cells[j].Value = row.ItemArray[j];        
            }

            i++;
        }
}

我的DataRow包含12个对象,因此我确保DataGridView有12列要对应(原始数据库中有12列)。我想我马上得到了例外(i在调试器中仍然是0)。我首先尝试使用row[i],但得到了同样的错误。

这是一个搜索结果窗格,而不是一个可编辑的东西,这就是为什么我只想返回某些结果。我认为DataGridView是在Windows窗体上布局记录的最好和最简单的方法。

1 个答案:

答案 0 :(得分:1)

在您访问DataGridView1.Rows[i].Cells[j]之前,您需要确保DataGridView1.Rows[i]存在。如果不是,则需要将其添加到DataGridViewRowCollection

您可以在this page上找到大量样本。