C#datagridview不包含行

时间:2016-03-22 19:47:07

标签: c# .net winforms datagridview

我正在开发一个程序,我希望在应用程序中显示数据库的内容,用户还必须能够编辑值,因此我认为数据网格视图是最佳选择。

我已成功制作了datagridview(通过将其拖放到winform上),并成功设置了数据源(显示了内容)。

设置datagridview的数据源:

db = new DatabaseHandler();

userDB = db.Get("users");
dtgv_users.DataSource = userDB.DefaultView;
dtgv_users.Update();

我还为编辑和验证事件的结束设置了一些事件处理程序:

private void dtgv_users_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    string id = userDB.Rows[e.RowIndex]["id"] + "";
    string column = userDB.Columns[e.ColumnIndex].ColumnName;
    var rows = dtgv_users.Rows;
    string data = dtgv_users.Rows[e.RowIndex].Cells[e.ColumnIndex].Value + ""
    db.Update("users", String.Format("{0}='{1}' WHERE id={2}", column, data, id));
}

private void dtgv_users_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (e.ColumnIndex == 0)
        dtgv_users.CancelEdit();
}

但是我遇到了一个问题:当我编辑datagridview中的第一行并按回车时我得到以下问题:An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll,如果我通过调试手动检查datagridview中的行是什么,我意识到它不包含任何行。

我如何解决这个问题,为什么datagridview不包含任何行?

我希望你们能帮帮我!

亲切的问候, 乔瓦尼

修改

问题在于Initialize从代码中移除了这个问题并且它有效,谢谢!。

1 个答案:

答案 0 :(得分:1)

我会在此处添加一个断点:dtgv_users.DataSource = userDB.DefaultView;并确保您的userDB.DefaultView中包含值。

此外,DefaultView是什么 - 我假设它是一个表 - 但如果不是直接绑定到表,那么在完成后保存更改。