開発環境: WinXP(SP3) VB2005 Oracle 9i
http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html
上記のサンプルを参考にして、
あるテーブルを DataGridView に表示して
その中の数値列をコンボボックスを追加しているのですが
下記エラーが発生します。
System.ArgumentExceptoin:DataGridViewComboBoxCell の値が
有効ではありません
テーブルの型、コンボボックスに追加する型を文字列に
するとエラーは発生しません。
DataGridViewのコンボボックスは数値型に対応していないので
しょうか?ご教授願います。
-- コンボボックス設定コード --
Dim column1 As New DataGridViewComboBoxColumn()
'ComboBoxのリストに表示する項目を指定する
column1.Items.Add(0)
column1.Items.Add(1)
column1.Items.Add(1.5)
column1.Items.Add(2)
column1.Items.Add(2.5)
'式列にバインドされているデータを表示する
column1.DataPropertyName = "頻度"
'式列の代わりにComboBox列を表示する
DataGridView1.Columns.Insert
(DataGridView1.Columns("頻度").Index, column1)
DataGridView1.Columns.Remove("頻度")
column1.Name = "頻度"
そのた不明な点等がございましたらご指摘お願いします。
> http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html
> 上記のサンプルを参考にして、
だったら、DOBON.NET の掲示板を利用すれば良いのに…。(^^;
> 下記エラーが発生します。
コンボボックスの一覧に無いデータが現れた場合、そのようなエラーとなります。
回避策は、コンボボックスに適切な項目を割り当てておくことです。また、
メッセージを出さなくするだけなら、DataGridView の DataError イベントも使えます。
> column1.Items.Add(1)
『Integer 型 の 1』を追加していますね。
> column1.Items.Add(1.5)
『Double 型 の 1.5』を追加していますね。
> DataGridViewのコンボボックスは数値型に対応していないので
> しょうか?ご教授願います。
元データの "頻度" 列の型は何ですか?
たとえば、その列が Double 型であるならば、コンボボックス側も
column1.Items.Add(0.0)
column1.Items.Add(1.0)
column1.Items.Add(1.5)
column1.Items.Add(2.0)
column1.Items.Add(2.5)
などとする必要がありますし、元データが Decimal 型ならば
column1.Items.Add(0D)
column1.Items.Add(1D)
column1.Items.Add(1.5D)
column1.Items.Add(2D)
column1.Items.Add(2.5D)
などとせねばなりません。
魔界の仮面弁士さんアドバイスありがとうございます。
>だったら、DOBON.NET の掲示板を利用すれば良いのに…。(^^;
確かにそうですね(^^;
こちらの掲示板で質問することが多く他の掲示板で
質問することが思いつきませんでした(^^;
>元データの "頻度" 列の型は何ですか?
調べると Decimal型でしたので
column1.Items.Add(0D)
column1.Items.Add(1D)
column1.Items.Add(1.5D)
column1.Items.Add(2D)
column1.Items.Add(2.5D)
で上手くいきました(^^
ありがとうございました。
ツイート | ![]() |