2012-03-21 112 views
0

请原谅我这个看似明显的问题,但我的搜索还没有揭晓答案。更新的DataGridView绑定到数据表

我有一个绑定到一个DataTable一个DataGridView。虽然所有行都显示在网格中,但在更改一个或多个DataGridView列中的值后,网格的DataSource所表的表不会更新。网格和表都包含一个主键。我在这里错过了什么?我需要在RowValidated事件中做些什么?

dgvCriticalContacts.AutoGenerateColumns = False 
    Dim ccRs As DataTable = Common.OpenRecordset("SELECT * FROM PhoneList") 
    dgvCriticalContacts.DataSource = ccRs 
+0

什么是CCR的?更新数据库的代码在哪里? – Steve 2012-03-21 23:49:46

+0

ccRS是一个数据表。当单元格更改时,我必须发出显式的SQL UPDATE语句吗?我猜DataGrid不会隐式执行更新。 – 2012-03-21 23:52:45

回答

1

A DataGridView无法自动更新您从中获取信息的数据库。虽然你可以使用一个DataTable给予DataGridView一个数据源,它也不必自行更新到数据库的能力。

然而,.NET框架确实有一个TableAdapterhttp://msdn.microsoft.com/en-us/library/bz9tthwx%28v=vs.90%29.aspx,3.5和更早版本)或DataAdapterhttp://msdn.microsoft.com/en-us/library/system.data.common.dataadapter%28v=vs.90%29.aspx,所有版本),可以执行这些功能。

我个人的经验是,这些适配器很快导致更多的问题比解决的,如果它是什么,更多的是简单的数据结构。如果它是什么,更复杂,你最好为您创造行的类,使一个BindingList(或类似的东西),以允许DataGridView显示它们。你将不得不实施你自己的变更跟踪和CRUD报表,但它是非常值得的,并且从长远来看可能会导致更少的头痛。