【问题标题】:Two datagridviews bound to the same table. Refresh not working两个数据网格视图绑定到同一个表。刷新不起作用
【发布时间】:2015-08-16 03:01:03
【问题描述】:

情况

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

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

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

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

问题

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

问题

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

【问题讨论】:

    标签: c# mysql datagridview refresh dataadapter


    【解决方案1】:

    事实证明,当我在选项卡之间移动而不是删除时,插入和修改被反映。然后我突然意识到我(重新)填充适配器会刷新修改的行并添加新的行,但它会使 removed 行保持不变。所以我只是在 Fill 之前插入了一个 DataTable.Clear 并且它工作得很好。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多