2012-03-21 91 views
0

この一見明らかな疑問を私に許してください。しかし、私の検索で答えが明らかにされていません。DataTableにバインドされたDataGridViewを更新します。

DataTableにバインドされたDataGridViewがあります。すべての行がグリッドに表示されますが、グリッドのデータソースによって表されるテーブルは、1つ以上のDataGridView列の値を変更した後に更新されません。グリッドとテーブルの両方に主キーが含まれています。私はここで何が欠けていますか? RowValidatedイベントで何かする必要がありますか?

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

ccRとは何ですか?データベースを更新するコードはどこですか? – Steve

+0

ccRSはDataTableです。セルが変更されたときに明示的なSQL UPDATE文を発行する必要がありますか?私は、DataGridが暗黙的に更新を実行しないと思います。 –

答えて

1

DataGridViewは自動的にあなたからあなたの情報を取得しているデータベースを更新することはできません。 DataTableを使用してDataGridViewにデータソースを与えることはできますが、データソース自体をデータベースに戻すことはできません。

しかし、.NET Frameworkは、これらの機能を実行することができる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、すべてのバージョン)を持っています。

私の個人的な経験として、これらのアダプターは、単純なデータ構造であれば、非常に迅速に問題を解決することができます。もっと複雑な場合は、行のクラスを作成してDataGridViewに表示させるためにBindingList(またはそれに類するもの)を作成する方がよいでしょう。独自のチェンジトラッキングとCRUDステートメントを実装する必要がありますが、その価値は十分であり、長期的には頭痛の種を少なくする可能性があります。

関連する問題