请原谅我这个看似显而易见的问题,但我的搜索没有透露答案。
我有一个绑定到DataTable的DataGridView。尽管所有行都显示在网格中,但是在更改一个或多个DataGridView列中的值后,Grid的DataSource表示的表不会更新。网格和表都包含主键。我在这里错过了什么?我是否需要在RowValidated事件中执行某些操作?
dgvCriticalContacts.AutoGenerateColumns = False
Dim ccRs As DataTable = Common.OpenRecordset("SELECT * FROM PhoneList")
dgvCriticalContacts.DataSource = ccRs
答案 0 :(得分:1)
DataGridView
无法自动更新您从中获取信息的数据库。虽然您可以使用DataTable
为DataGridView
提供数据源,但它也无法将自身更新回数据库。
但是,.Net Framework确实有TableAdapter
(http://msdn.microsoft.com/en-us/library/bz9tthwx%28v=vs.90%29.aspx,3.5及更早版本)或DataAdapter
(http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter%28v=vs.90%29.aspx,所有版本)可以执行这些功能
我个人的经验是,如果它们是一个简单的数据结构,这些适配器很快会导致比解决更多的问题。如果它更复杂,最好为您的行创建一个类并制作BindingList
(或类似的东西)以允许DataGridView
显示它们。您将不得不实施自己的更改跟踪和CRUD语句,但这非常值得,从长远来看可能不会让您头疼。