简而言之:我有一个数据集,里面有多个数据表,它们通过多个数据关系连接。我在这个数据集上使用数据绑定创建了一个表单,可以说它相当复杂。
接下来是场景:表单的主要目的是插入新记录。要插入它,必须设置各种父子关系。数据绑定可以很好地工作,但接下来的问题是:当用户想要为其中一个父子关系输入一个新的“子”时,新表单打开,他输入它,yada-yada-yada,-然后它就工作了。问题是-我应该如何将新数据恢复到原始形式,以显示在父子组合框中?
我知道的一种方法是刷新整个表单;但我正在寻找一种解决方案,只刷新包含该数据的数据表。我尝试从DB中获取一个新的DataTable,其中包含新数据,并将其与DataSet中的DataTable合并,但不起作用:“一个子行有多个父行”引发异常:
// basically just a Select * using dataadapter,
// nothing programmatically added
DataTable table = tableModule.GetPlainTable();
existingDataSet.Tables["tableName"].Merge(table);
我正在尝试做的一个等效示例是创建一个带有客户组合框的订单。在组合框的右侧,有一个“添加”按钮,打开一个新的“添加客户”表单。只需提及(可能是相关的),在数据库中,“客户”表与“城市”表是相关的,并且数据在订单表单上的数据绑定中也是链接的。。。
编辑:我能想到的一个解决方案是“手动”在新的DataTable中循环,并在DataSet中查找不在原始DataTable中的所有行,但我不确定这是否可行。。。