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

DataGridViewの列にコンボボックスについて

環境/言語:[Windows7 VB.NET2010 Framework4]
分類:[.NET]

こんにちは。

データベースから値(0or1)を取得し結果を表示するのにコンボボックスで表示したいのですが。(例:1ならON、0ならOFFのような)

そこで、下記ページを参考にしています。
http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html
「DataSourceプロパティを使用した例」

ここで、列の情報を「DataGridView1.Columns.Add(column)」で追加していますが
各列について画面のフレームワークで作成した状態なのでAddメソッドではなく設定をセットするような方法はありませんでしょうか?
■No27196に返信(みけんにしわさんの記事)
> データベースから値(0or1)を取得し結果を表示するのにコンボボックスで表示したいのですが。(例:1ならON、0ならOFFのような)
2 値ならばチェックボックス列でも良い気がしますが、
今回はドロップダウンの方が都合が良いのですね?


> 各列について画面のフレームワークで作成した状態なのでAddメソッドではなく設定をセットするような方法はありませんでしょうか?
「画面のフレームワークで作成した状態」というのが良く分かりませんが、
Columns.Add を使えないと言う意味であれば、
 column.DataSource = weekTable
 column.ValueMember = "Value"
 column.DisplayMember = "Display"
 DataGridView1.Columns.Add(column)
という部分を、
 Dim column As DataGridViewComboBoxColumn
 column = DataGridView1.Columns(列名)
 column.DataSource = weekTable
 column.ValueMember = "Value"
 column.DisplayMember = "Display"
にしてみてください。

もし、列定義をデザイナ上で行っているなら、上記で column 変数を
用意する代わりに、[列の編集]ダイアログで定義された名前を使って
 Column2DataGridViewTextBoxColumn.DataSource = weekTable
 Column2DataGridViewTextBoxColumn.ValueMember = "Value"
 Column2DataGridViewTextBoxColumn.DisplayMember = "Display"
のように記述する事もできます。

また、コンボボックスに表示する一覧データが 型付き DataSet にある場合は、
これらの DataSource / ValueMember / DisplayMember の設定を
デザイン時におこなっておくこともできます。
こんにちは。

返信ありがとうございます。


■No27198に返信(魔界の仮面弁士さんの記事)
> ■No27196に返信(みけんにしわさんの記事)
>>データベースから値(0or1)を取得し結果を表示するのにコンボボックスで表示したいのですが。(例:1ならON、0ならOFFのような)
> 2 値ならばチェックボックス列でも良い気がしますが、
> 今回はドロップダウンの方が都合が良いのですね?
>
例えが悪くて申し訳ありません。
0なら「繰り返し」、1なら「1回のみ」とフラグを持たせていたので、コンボボックスで文字を見て選べたほうがよいと判断しました。



>>各列について画面のフレームワークで作成した状態なのでAddメソッドではなく設定をセットするような方法はありませんでしょうか?
> 「画面のフレームワークで作成した状態」というのが良く分かりませんが、
>
失礼しました。デザイン上です。


> Columns.Add を使えないと言う意味であれば、
>  column.DataSource = weekTable
>  column.ValueMember = "Value"
>  column.DisplayMember = "Display"
>  DataGridView1.Columns.Add(column)
> という部分を、
>  Dim column As DataGridViewComboBoxColumn
>  column = DataGridView1.Columns(列名)
>  column.DataSource = weekTable
>  column.ValueMember = "Value"
>  column.DisplayMember = "Display"
> にしてみてください。
>
> もし、列定義をデザイナ上で行っているなら、上記で column 変数を
> 用意する代わりに、[列の編集]ダイアログで定義された名前を使って
>  Column2DataGridViewTextBoxColumn.DataSource = weekTable
>  Column2DataGridViewTextBoxColumn.ValueMember = "Value"
>  Column2DataGridViewTextBoxColumn.DisplayMember = "Display"
> のように記述する事もできます。
>
> また、コンボボックスに表示する一覧データが 型付き DataSet にある場合は、
> これらの DataSource / ValueMember / DisplayMember の設定を
> デザイン時におこなっておくこともできます。

一番上の方法で出来ました!

3番目の方法は試していないのですが、「型付き DataSet」が判らないので
時間が出来た時に調べて試してみたいと思います。

ありがとうございました。
解決済み!

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