【发布时间】:2009-09-02 14:18:07
【问题描述】:
简而言之:我有一个内部包含多个 DataTables 的 DataSet,它们通过多个 DataRelations 连接。我已经在这个 DataSet 上使用数据绑定创建了一个表单,你可以说它非常复杂。
接下来是场景:表单的主要目的是插入新记录。要插入它,必须设置各种父子关系。数据绑定一切正常,但问题是下一个:当用户想要为其中一个父子关系输入一个新的“子”时,新表单打开,他输入它,yada yada yada, - 它作品。麻烦的是 - 我应该如何将新数据恢复到原始表单,以显示在父子组合框中?
我知道的一种方法是刷新整个表单;但我正在寻找一种解决方案来仅刷新包含该数据的 DataTable。我尝试从 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 中的所有行,但我不确定这是否可行......
任何帮助/建议/解释/推动正确的方向将不胜感激:)
【问题讨论】:
标签: c# data-binding merge datatable dataset