- PR -

DataGridViewのDataGridViewComboBoxColumnで例外

投稿者投稿内容
hwman
会議室デビュー日: 2006/09/24
投稿数: 11
投稿日時: 2007-09-09 13:53
DataGridViewにカラムを追加して
NameプロパティをDgvColumnType
ColumnTypeプロパティをDataGridViewComboBoxColumn
に設定しました。

DataGridView内のコンボボックスの項目を設定するために
下記を記述しました。
DgvColumnType.DataSource = new Color[]{Color.Black,Color.Red};

実行時に、a,b,cはリスト内にあるのですが、選択すると
「DataGridViewComboBoxCellの値が有効ではありません」
と例外が発生します。

なにが悪いのか分かりません。
ご助言願います。

環境
Windows2000
Visual C# 2005 Express Edition
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-09-09 14:31
選択されたデータ(Color型)をデータソース(ComboBoxColumnのではなくDataGridViewの)に
バインドできないのではないでしょうか?

DataGridViewはバインドして使っていますか?
バインドしている場合、何にバインドしていますか?
ComboBoxCellに対応している列の型は何ですか?

その辺りを考慮して、Color 型ではなく、
データソースにそのまま格納できる型で ComboBoxColumn のデータソースを設定するか、
あるいは CellParsing イベントで適切な型変換を行う必要があると思います。
hwman
会議室デビュー日: 2006/09/24
投稿数: 11
投稿日時: 2007-09-09 22:26
DataGridViewには何もバインドしていません。

それが原因でしょうか?
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-09-09 23:13
引用:

たくじさんの書き込み (2007-09-09 22:26) より:
DataGridViewには何もバインドしていません。

それが原因でしょうか?


そう思うなら試せばいいのに。
hwman
会議室デビュー日: 2006/09/24
投稿数: 11
投稿日時: 2007-09-10 01:39
回答する側はずいぶんと乱暴な言葉でもいいんですね・・・
トレプチェット
会議室デビュー日: 2005/09/04
投稿数: 8
投稿日時: 2007-09-10 01:59
確かにそう感じられるかもしれませんね
しかも、今回のように誤ったアドバイスをしても
なんらお咎めなし。

DataGridViewをバインドさせる必要はありませんよ
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-10 07:07
そうか?
掲示板で聞いたら、誰か親切な人がたまたま読んで、答えて、自分がそれを見るまで、答えを得られない。
でも、自分でやってみたら、数分後には答えが得られる。

この差はとても大きいと思う。


どこかで質問者が「私の手間を考えてください」とか曰っていたが、回答者の手間は考えてくれないわけ?そこまで手取り足取りを要求するなら、それなりの対価を払おうよ。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-09-10 09:34
誤解させたようですみません。
バインドしなければいけないと書いたつもりはありません。
DataGridView はバインドさせて使うケースが多いので、
バインドしている前提で説明しました。

バインドしていない場合は、DataGridViewColumn.ValueType に
設定されている型に変換できない場合に、その例外が発生します。

改めて読み直して気づいたのですが、
DataGridViewComboBoxColumn のデータソースに設定したのは Color の配列で、
リストにあるのは「a,b,c」なんですか?
よく状況が飲み込めないです。
その辺りをもう少し詳しく書いて頂けませんか?
色をリストから選ばせたいのかと思ったのですが。

スキルアップ/キャリアアップ(JOB@IT)