DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewの複数コンボボックスの関連付け

環境/言語:[VB2010]
分類:[.NET]

お世話になります。
DataGridViewに複数の選択用コンボボックスを表示しているのですが、それぞれの関連付けがうまくできません。
列1で選択された項目に関連する物だけを列2で表示したいのですが、どうすれば良いのでしょうか?

列1と列2用のDataTableをあらかじめ作成しておき、列1と列2には以下のように設定しています。

[DataTable1]
区分コード,区分名
0,野菜
1,果物
2,肉

[DataTable2]
品名コード,区分コード,品名
0,0,キュウリ
1,0,レタス
2,1,メロン
3,1,スイカ
4,2,鶏肉
5,0,ニンジン

Dim 列1 As New DataGridViewComboBoxColumn
列1.DataSource = DataTable1

Dim 列2 As New DataGridViewComboBoxColumn
Dim DataView2 As DataView = DataTable2.DefaultView
列2.DataSource = DataView2

この状態なら、列1も列2もどの値も使用問題ないのですが、

DataGridViewのEditingControlShowingイベントで、
DataView2.RowFillter = "列1コード=" & DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells("列1").Value

とフィルタを設定すると、列1で選択した区分コードに対応するリストが表示され目的は達成できるのですが、
この行以外で、違う区分の行でDataErrorイベントが発生します。

おそらく根本的なやり方が違うのだと思いますが教えて下さい。
よろしくお願いします。
■No31593に返信(とんとろさんの記事)

列に一括でDataSourceを指定するのではなくセル毎に指定しないと
全部の行が同じDataSourceとなる為フィルタリングされたリストに
含まれない状態が発生してしまいます。

DOBON.NET | プログラミング道 | プログラミング掲示板