VB.NET で ComboBox のリスト項目を編集[プログラミング]
(2015-03-05 12:55:26) by shinoda
VB.NET で ComboBox のプルダウンリストに項目をセットする方法。
DB のマスタからデータ読み込んできて、そのコードと名前をセットしようとすると、
Me.CodeComboBox.SetBinding(ds.address, "address_code", "address_name")
みたいにバインディングしてしまうのが一番楽だが(これで、プルダウンのところに "コード|名前"のように表示される)、マスタの中身そのままではなく、後ろに「まとめコード」だったり「その他コード」だったり、マスタにないコードを追加したい時がある。
マスタを読み込んだデータセットの最後にレコードを追加してやってから SetBinding するという裏技的なことも可能だが、Null が許されてない項目にダミーの値をセットしたり面倒くさい。
そんな時は、素直にバインディング用の新しいテーブルセットを作って処理する方が結果的に簡単。
Dim codeTbl As New DataTable()
codeTbl.Columns.Add("address_code", GetType(Integer))
codeTbl.Columns.Add("address_name", GetType(String))
Dim row As DataRow = Nothing
For Each dr In ds.address
row = codeTbl.NewRow()
row("address_code") = dr.address_code
row("address_name") = dr.address_name
codeTbl.Rows.Add(row)
Next
' 合計コード(0)の追加
row = codeTbl.NewRow()
row("address_code") = 0
row("address_name") = "合計"
codeTbl.Rows.Add(row)
codeTbl.AcceptChanges()
Me.CodeComboBox.SetBinding(codeTbl, "address_code", "address_name")
これで、無事一番下に 0 の項目が追加される。(FormatString="000" で)
随分行数は増えるが、コードとして美しい。うっとり。
コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る
Powered by
MT4i 3.0.8