情况:

我正在使用.NET4.0在VS2013中使用C#编写Winforms应用程序。

在选项卡式控件上,我有两个选项卡。


首先,我有一个通过数据适配器绑定到MySQL“产品”表的dgv,还有一个绑定到MySQL“ stock”表的dgv。它们是相关的,因此仅显示选定产品的库存项目。
在第二个选项卡上,我需要显示一个带有完整“库存”表的dgv,不受“产品”的约束。因此,我建立了一个单独的适配器,该适配器由相同的MySQL“ stock”表填充。我使用单独的适配器,以便获得所有行的不受约束的视图。


我还需要确保,当我在一个选项卡上对库存进行更改时,这会反映在另一个选项卡上。

问题:

每当用户退出dgv行时,我都会更新数据库(通过adapter。在RowValidated上更新)。为确保更改在两个选项卡中均得到反映,我将处理TabControl.Selected事件,在该事件中(重新)填充关联的适配器,然后刷新dgv。但是,这不会显示在其他选项卡中所做的更改。我确保在切换选项卡之前,MySQL数据库已正确更新。因此,出于某种原因,似乎其他适配器或dgv没有接好。

题:

如何才能成功完成此刷新?我认为这可能是使用错误命令的简单问题,或者可能是两个适配器指向同一张表是错误的方法。

最佳答案

原来,当我在选项卡之间移动但不删除时,会反映出插入和修改。然后我想到,适配器的我(重新)填充会刷新修改过的行并添加新行,但是删除的行将保持不变。所以我只是在Fill之前插入了一个DataTable.Clear,这使它工作得很好。

关于c# - 绑定(bind)到同一表的两个datagridviews。刷新无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30594050/

10-11 06:01