【问题标题】:How to refresh datagridview binding in vb.net or C#?如何在 vb.net 或 C# 中刷新 datagridview 绑定?
【发布时间】:2011-09-16 22:54:29
【问题描述】:

我在mysql数据库中创建了两个表(FIRSTtable和SECONDtable)和两个相关的表。

FIRST 表有一个列 (product_id (pK), product_name)。 SECOND 表有一个列 (machine_id, production_date, product_id (fK), product_quantity, operator_id)。

使用 Product_id 列与 UpdateCascade 和 DeleteCascade 的两个表之间的关系。当我尝试使用 sql 脚本时,这两种关系都正常运行。假设我删除了 FIRST 表中的所有 product_id,那么 SECOND 表中的所有现有数据都会被删除。

这两个表都显示在 datagridview 中。当我删除FIRST表中的所有数据时,datagridview FIRST表中的所有行都会被删除,mysql FIRST表中的数据也会被删除。

我尝试打开mysql数据库,SECOND表中的数据也被删除了,问题为什么第二个datagridview中的那个view,删不掉,还保留之前的数据?如何在 vb.net 或 C# 中刷新 datagridview 绑定?谢谢。

    With Me.SECOND_DataGridView
        .Datasource = Nothing  ' tried this, but failed.
        .DataSource = MyDataset.Tables("SECOND_table")
    End With

【问题讨论】:

    标签: c# mysql vb.net datagridview


    【解决方案1】:

    我相信您遇到的事实是 MySQL 引擎实际上正在为您执行级联删除。

    当您将 MySQL 数据查询到本地化的 C#“DataTable”(DataSet 中的表)时,该数据现在位于内存中,而不直接链接到磁盘上的数据。当您删除第一个数据表的“内存”版本中的行时,它会导致第二级表的删除发生在服务器上,而不是直接更新您的内存版本数据表二。

    话虽如此,您可能必须做两件事之一...重新查询整个数据集(表一和表二)以完全刷新实际数据库中的 STILL 内容...或者...当您从数据集的第一个表中调用删除时,您还必须在本地数据表 TWO 中执行删除处理以保持同步。

    【讨论】:

    • 是的,你是对的。删除第一个数据表中的数据并删除第一个表(磁盘)中的数据后,我做清除数据集,并用刚刚更新的数据库重新填充数据集,它现在可以工作了。
    • *我以编程方式创建了一个mysql数据库、表和列以及它们之间的关系。成功后,我将数据库放入数据集,使用命令 MyDataAdapter.Fill (MyDataset, valSch.Tables.TableName) 包括表与命令 MyDataAdapter 之间的关系。 MissingSchemaAction = MissingSchemaAction.AddWithKey。这是否意味着 Dataset 内的 DataTable 之间的关系不起作用?谢谢
    • @wira yudha,老实说,我无法回答这个问题,因为我没有处理过数据集和级联删除。在包含两个数据表的数据集级别,它们之间可能存在一些可配置的关系设置,但同样,我从未处理过这个特定元素。
    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多