DataGridView不提交对数据库的更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }
} 
答案

正如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更新/刷新。检查行是否也被实际修改是个好主意。

以上是关于DataGridView不提交对数据库的更新的主要内容,如果未能解决你的问题,请参考以下文章

C#中datagridview控件 如何进行删除修改添加数据并保存到数据库中

对 DataGridView 进行排序后,如何更新数据源以反映 DataGridView 的绑定?

在更新到数据库之前编辑 DataTable 中的行

C# 如何动态更新DataGridView

从后台线程奇怪的行为更新 datagridview

数据未更新到数据库 c# datagridview