我在 WinForms 应用程序中进行简单的表格编辑时遇到问题。我一定是错过了一步。
我有一个DataSet
包含一个DataTable
连接到一个数据库的SqlDataAdapter
. SqlCommandBuilder
上有一个SqlDataAdapter
。在表单上,有TextBoxes
哪些绑定到DataTable
. 绑定是在 Designer 中完成的,其机器生成的语句如下所示:
this.tbLast.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.belkData, "belk_mem.last", true));
当我在 中填充行时,DataTable
数据库中的值出现在文本框中,但是当我更改 的内容时TextBox
,更改显然不会出现在DataTable
. 当我尝试保存更改时,以下两个都返回 null:
DataTable dtChanges = dtMem.GetChanges();
DataSet dsChanges = belkData.GetChanges();
我忘记了什么?
编辑 - 对mrlucmorin的回应:
保存在一个按钮下。代码是:
BindingContext[belkData, "belk_mem"].EndCurrentEdit();
try
{
DataSet dsChanges = belkData.GetChanges();
if (dsChanges != null)
{
int nRows = sdaMem.Update(dsChanges);
MessageBox.Show("Row(s) Updated: " + nRows.ToString());
belkData.AcceptChanges();
}
else { MessageBox.Show("Nothing to save.", "No changes"); }
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
我尝试在不改变行为的情况下放入这些语句:
dtMem.AcceptChanges();
belkData.AcceptChanges();