绑定到相同 table 的两个数据网格视图。刷新无效
Two datagridviews bound to the same table. Refresh not working
情况:
我正在 VS2013 和 .NET4.0 中使用 C# 编写 Winforms 应用程序。
在选项卡控件上我有两个选项卡。
- 首先我有一个通过数据适配器绑定到 MySQL "product" table 的 dgv 和一个绑定到 MySQL [=42= 的 dgv ] table。这些是相关的,因此只显示所选产品的库存项目。
- 在第二个选项卡上,我需要显示 完整 "stock" table 的 dgv,不受 "product" 约束。所以我设置了一个单独的适配器,由相同的 MySQL "stock" table 填充。我使用单独的适配器,以便获得所有行的无约束视图。
我还需要确保,当我在一个选项卡上对库存进行更改时,这会反映在另一个选项卡中。
问题:
每次用户退出 dgv 行时我都会更新数据库(通过 RowValidated 上的 adapter.Update)。为确保更改反映在两个选项卡中,我处理 TabControl.Selected 事件,在该事件中我(重新)填充关联的适配器,然后刷新 dgv。但是,这不会显示在其他选项卡中所做的更改。我已确保在切换选项卡之前,MySQL 数据库已正确更新。因此,似乎其他适配器或 dgv 出于某种原因没有选择它。
问题:
如何才能成功实现此刷新?我认为这可能是使用错误命令的简单问题,或者可能是将两个适配器指向同一个 table 是错误的方法。
事实证明,当我在选项卡之间移动而不是删除时,插入和修改 被 反映出来。然后我突然意识到,我的(重新)填充适配器会刷新修改后的行并添加新行,但它会使 removed 行保持不变。所以我只是在 Fill 之前插入了一个 DataTable.Clear 并且让它工作得很好。
情况:
我正在 VS2013 和 .NET4.0 中使用 C# 编写 Winforms 应用程序。
在选项卡控件上我有两个选项卡。
- 首先我有一个通过数据适配器绑定到 MySQL "product" table 的 dgv 和一个绑定到 MySQL [=42= 的 dgv ] table。这些是相关的,因此只显示所选产品的库存项目。
- 在第二个选项卡上,我需要显示 完整 "stock" table 的 dgv,不受 "product" 约束。所以我设置了一个单独的适配器,由相同的 MySQL "stock" table 填充。我使用单独的适配器,以便获得所有行的无约束视图。
我还需要确保,当我在一个选项卡上对库存进行更改时,这会反映在另一个选项卡中。
问题:
每次用户退出 dgv 行时我都会更新数据库(通过 RowValidated 上的 adapter.Update)。为确保更改反映在两个选项卡中,我处理 TabControl.Selected 事件,在该事件中我(重新)填充关联的适配器,然后刷新 dgv。但是,这不会显示在其他选项卡中所做的更改。我已确保在切换选项卡之前,MySQL 数据库已正确更新。因此,似乎其他适配器或 dgv 出于某种原因没有选择它。
问题:
如何才能成功实现此刷新?我认为这可能是使用错误命令的简单问题,或者可能是将两个适配器指向同一个 table 是错误的方法。
事实证明,当我在选项卡之间移动而不是删除时,插入和修改 被 反映出来。然后我突然意识到,我的(重新)填充适配器会刷新修改后的行并添加新行,但它会使 removed 行保持不变。所以我只是在 Fill 之前插入了一个 DataTable.Clear 并且让它工作得很好。