2012-11-19 9 views
7

のちょうどと私の問題が一致したので質問が見つかりませんでした。エラー:「DataGridViewComboBoxCellの値が無効です。」 t DataSourceは基本タイプのリストです

this questionおよびthis questionと同様に、DataGridViewComboBoxColumnDataSourceをリストに設定しています。私の場合、物事は倍精度やint型のような単純な型なので、ValueMembersとDisplayMembersについての答えは私には良いことではありません。ユーザーが値を選択すると、恐ろしい "DataGridViewComboBoxCell値が無効です"というエラーが表示されます。

空のdataGridView_DataErrorハンドラでエラーを飲み込めるかもしれませんが、それは明らかに悪い方法です。

答えて

18

答えはhereです。私の質問の2番目のリンクにもthis answerに記載されています。文字列ではありません何のリストにDataSourceを設定するときは、typeof(<your data type>)

 IList<double> kvChoices; 
     // Populate kvChoices... 
     DataGridViewComboBoxColumn kvCol = 
      dataGridView1.Columns[0] as DataGridViewComboBoxColumn; 
     kvCol.DataSource = kvChoices; 
     kvCol.ValueType = typeof(double); 
+1

たかったですkvCol.ValueType = typeof(double); 'thanks – 56ka

+1

注:私は一般的にデザイン時にグリッドを設定します。 ValueTypeプロパティは設計時に使用できないので、Form_Loadルーチンに次のコードを追加します。gridSequences.Columns [Year.Name] .ValueType = typeof(Int32) –

0

これはサブタイプについての凝り性であるに列のValueTypeを設定します。 ValueTypeがIntのときにエラーが発生しましたが、DataSourceにはSQLServer SMALLINTが含まれていました(データソースのVisual Studio 2010 Quick-Watchによると、でした)。 DB列をSMALLINT - > INTから変更すると、私のために修正されました。

0

私にとっての問題は、私のコンボが値1、2と3を持っていた....私のデータソースを返していました値がコンボボックスで利用できなかったということでした...しかし、データソースは、トリックは `だった4

関連する問題