在Winform C#中的Master-Detail视图中处理详细信息更新

时间:2015-02-08 18:15:11

标签: c# winforms dataset bindingsource tableadapter

我有一个应用程序,它有一个Mainform,有2个面板使用分割器。顶部面板是一个包含绑定导航器,数据集,绑定源,tableadapters的表单。

底部面板也是一种形式。它基本上只是一个datagridview。当Mainform加载时,我将绑定源从顶部表单传递到底部表单。

底部表单接受bindingsource,并为它自己的数据源成员使用一个关系(在两个表之间)。

查看数据效果很好。

当我更新主数据中的数据时,我会在用户导航记录时捕获它。我使用bindingsource.EndEdit(),DataSet.HasChanges()来验证然后tableadapter.update在导航到下一条记录之前写入数据。

这也很有效。

现在,我如何以详细(底部)形式捕获和写入数据?所有它都是传入的bindingsource。

我有一个部分工作的解决方案,其中顶层表单实际上使用第二个tableadapter.update语句来编写子表..但它似乎需要2个记录导航才能工作。 (此时数据实际上已正确更新)

任何高级别更好的方法来完成所有这些工作? 谢谢 [R

1 个答案:

答案 0 :(得分:0)

看起来这是事件订单的一般问题..或者它可能是特定于bindingnavigator或我的设置..但是为了在底部applet中更改记录之前触发底部表单的事件(当直接从底部的修改后的网格行点击导航器,我必须首先在顶级applet事件中显式移动焦点。在我的情况下,我捕获了导航器上的任何点击,只是运行this.focus();这导致所有底部形式事件在继续之前触发。然后,这允许我的haschanges()检查顶部表单在底部表单中的bindingsource.endedit之后发生。