使用BindingSource、DataSet和TableAdapter从数据绑定控件处理插入的正确顺序是什么?这让我永远感到困惑。
我有一个用于添加新行的表单。
在显示表格之前,我调用:
bindingSource.AddNew();
bindingSource.MoveLast();
保存后,我调用:
bindingSource.EndEdit();
tableAdapter.Insert([the row given to me as bindingSource.Current]);
问题是
- 如果我不调用
EndEdit()
,则当前焦点的 TextBox 的更改不会保存 - 如果我调用
EndEdit()
,BindingSource 的 Current 成员不再指向我刚刚添加的行。
我当然可以Insert()
使用表单中的值而不是由 BindingSource 更新的 DataTable 调用,但这违背了使用数据绑定的目的。我需要做什么才能使它正常工作?
我知道我可以调用TableAdapter.Update()
整个数据集,因为我使用的是强类型数据集。不过,我在表中有未绑定数据的外键,并且我在调用 Insert() 之前添加了这些外键。