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控件 如何进行删除修改添加数据并保存到数据库中