VB.NET で ComboBox のリスト項目を編集

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" で)

20150305_list.jpg

随分行数は増えるが、コードとして美しい。うっとり。

トラックバック(0)

このブログ記事を参照しているブログ一覧: VB.NET で ComboBox のリスト項目を編集

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3345

コメントする

このブログ記事について

このページは、shinodaが2015年3月 5日 12:55に書いたブログ記事です。

ひとつ前のブログ記事は「福岡リサイクルとは法廷で向き合う必要があるよのお」です。

次のブログ記事は「今度は白くなっていくホンマ製ストーブ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら