我有一个从数据库填充的 DataGridView。我有一个按钮可以将 DGV 中的更改保存到数据库中,这很好用。但是现在我希望数据库在 DGV 中的某些内容发生更改时自动更新。
我尝试了几个事件,如 CellEndEdit、CellLeave、CellValidated、CellValueChanged 和 SelectionChanged。如果我编辑单元格内容并按 Enter 或单击/选择其上方或下方的单元格工作正常,则更改将保存到数据库中,但如果我在同一行中按选项卡或单击/选择旁边的单元格,则更改未保存。上述事件都没有帮助我解决这个问题。
//编辑
一些示例代码:
我这样填写我的 DGV
query_em = "select * from Table;";
try
{
dt_em = new DataTable();
da_em = new OleDbDataAdapter(query_em, connString);
cb_em = new OleDbCommandBuilder(da_em);
bs_em = new BindingSource();
da_em.Fill(dt_em);
bs_em.DataSource = dt_em;
dgv_em.DataSource = bs_em;
dgv_em.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
通常我用一个按钮更新它们
private void bt_save_em_Click(object sender, EventArgs e)
{
try
{
da_em.Update(dt_em);
MessageBox.Show("Database updated.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
但我想让这样的东西正常工作,但它没有。上面描述了确切的问题。
private void dgv_em_SelectionChanged(object sender, EventArgs e)
{
da_em.Update(dt_em);
}