人気ブログランキング | 話題のタグを見る
(.Net)DataGridViewのデータソースをVSで自動的に生成した時にDBへ更新する方法
DataGridView をフォームに貼り付けた際、VisualStudio のデザイナで DataGridView の DataSource(DB) を設定すると、フォームに勝手に TableAdapter やら BindingSource やら DataSet やらが作成されます。

この時にユーザが変更した DataGridView をデータベースへ反映する方法です。
ちなみに、コードの中で DataTable や DataSet を DataGridView.DataSource にバインドした時は、TableAdapter.Update にバインドさせた DataTable や DataSet を渡せばOKでした。

デザイナでグリッドのデータソースを設定した時は BindingSource.DataSource オブジェクトを TableAdapter.Update に渡せばいいようです。(その前に DataGridView と BindingSource をコミットするする必要がありますが。。)
ただ、BindingSource.DataSource は Object 型なんで、TableAdapter.Update に渡す時に実際の DataSet にキャストしてやらないといけないようです。
(実際の BindingSource.DataSource の型はVSで BindingSource のプロパティを見るとわかります)
'dgvはDataGridView。グリッド編集終了(DataTableにコミット)  dgv.DataSourceプロパティに TestBindingSource が入ってる。
dgv.EndEdit()
'バインディングソースのコミット
TestBindingSource.EndEdit()
'TestBindingSource.DataSource の実際の型は TestDataSet。↓でDBに更新をかける
ProductsTableAdapter.Update(DirectCast(TestBindingSource.DataSource, TestDataSet))



後、これもいつも忘れるんですが、DataGridView に DBNull をセットしたい時は、
dgv.Rows(0).Cells(0).Value = Nothing
というように、null を渡してやらないといけません。
ついつい
dgv.Rows(0).Cells(0).Value = DBNull.Value
とやっちゃいますが、これをすると空文字(String.Empty)が入ってしまうようです。
by jehoshaphat | 2009-06-22 19:08 | .Net開発 | Comments(0)


<< (.Net)DataGirdV... (MCP70-642)2.2 ... >>