我使用设计器将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);
}
}
答案 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更新/刷新。检查行是否也被实际修改是个好主意。