2011-06-17 53 views
1

我在mysql数据库和两个相关的表中创建了两个表(FIRSTtable和SECONDtable)。如何刷新vb.net或C#中的datagridview绑定?

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

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

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

我试着打开mysql数据库,数据都在SECOND表中也被删除了,问题为什么在第二个datagridview中,不能删除的视图仍然保留以前的数据?如何刷新vb.net或C#中的datagridview绑定?谢谢。

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

回答

2

我相信你正在运行的是MySQL引擎实际上是在为你执行级联删除。

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

这就是说,你可能需要做两件事情之一......重新整理数据集(表一和表二),以获得对实际数据库中仍然存在的内容的完整刷新......或者.. 。当你调用从表中删除一个数据集时,你必须在本地数据表TWO中执行删除处理,并保持同步。

+0

是的,你是对的。删除第一个数据表中的数据并删除第一个表(磁盘)中的数据后,我将执行清除数据集,然后使用刚刚更新的数据库重新填充数据集,并立即开始工作。 – 2011-06-17 11:44:03

+0

*我编程创建了一个mysql数据库,表和列以及它们之间的关系。成功完成后,我将数据库放入数据集中,使用命令** MyDataAdapter.Fill(MyDataset,valSch.Tables.TableName)**包括表与命令** MyDataAdapter.MissingSchemaAction = MissingSchemaAction之间的关系。 AddWithKey **。这是否意味着DataTable中的DataTable之间的关系不起作用?谢谢 – 2011-06-17 11:44:33

+0

@wira yudha,我真的不能回答,因为我没有处理数据集和级联删除。在包含两个数据表的数据集级别上,它们之间可能存在一些可配置的关系设置,但是我再也没有处理过这个特定元素。 – DRapp 2011-06-17 12:46:18