DataGridView不提交对数据库的更新

时间:2017-12-27 22:45:21

标签: c# sql winforms datagridview

我使用设计器将datagridview的数据源设置为我的SQL数据库表。在RowLeave事件上,我使用BindingSource.EndEdit来提交更改。但是,datagridview中的更改未反映在数据库中。正确调用EndEdit。

private void UI_DGV_AppData_RowLeave(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        entriesBindingSource.EndEdit();
        UI_DGV_AppData.Update();
        UI_DGV_AppData.Refresh();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
} 

1 个答案:

答案 0 :(得分:0)

正如Crowcoder所说,EndEdit()不会将更改提交到数据库,您将不得不使用适配器。在您致电EndEdit()后,您需要在桌面适配器上调用Update()。既然你使用了设计师,它可能看起来像这样:

entriesBindingSource.EndEdit();
try
{
    DataRow row = DataSet.Entries.Rows[e.RowIndex];
    if (row.RowState == DataRowState.Modified)
        entriesTableAdapter.Update(row);
}  

DataSet.Entries 将是您调用数据集和表的任何内容。并且可能不需要DGV更新/刷新。检查行是否也被实际修改是个好主意。