7

の問題に完全に一致するSOに関する質問を見つけることができませんでした。

この質問この質問と同様に、私は物事のリストにを設定しDataSourceています。DataGridViewComboBoxColumn私の場合、doubleやintのような単純なタイプなので、ValueMembersとDisplayMembersについて話している答えはあまり役に立ちません。ユーザーが値を選択すると、恐ろしい「DataGridViewComboBoxCell値が無効です」というエラーが表示されます。

空のdataGridView_DataErrorハンドラーでエラーを飲み込むことはできますが、それは明らかに悪い方法です。

4

4 に答える 4

21

ここで答えを見つけました。これは、私の質問の2番目のリンクに対するこの回答でも言及されています。DataSource文字列以外のリストにを設定する場合ValueTypeは、列のを次のように設定します。typeof(<your data type>)

        IList<double> kvChoices;
        // Populate kvChoices...
        DataGridViewComboBoxColumn kvCol =
            dataGridView1.Columns[0] as DataGridViewComboBoxColumn;
        kvCol.DataSource = kvChoices;
        kvCol.ValueType = typeof(double);
于 2012-11-19T20:43:29.553 に答える
0

これはサブタイプについては気難しいです。ValueTypeがIntの場合でもエラーが発生しましたが、データソースにSQLServer SMALLINTが含まれていました(データソースのVisual Studio 2010クイックウォッチはInt32であると言っていました!)。DB列をSMALLINT->INTから変更すると、修正されました。

于 2013-11-07T00:57:10.643 に答える
0

私にとっての問題は、データソースが返していた値がコンボボックスで利用できないことでした。コンボの値は1、2、3でしたが、データソースは4を必要としていました。

于 2017-05-29T19:05:28.473 に答える
0

私は同じタイプの問題に苦労し、この問題を修正するために私がしたことに答えると思いました。

List<int> myList = new List<int>();
//Populate list with data

DataGridViewComboBoxColumn c1 = new DataGridViewComboBoxColumn();
c1.ValueType = typeof(int);

c1.DataSource = myList;

dataGridView.Columns.Add(c1);

私はまだこの問題を抱えている人を助けることができると思います。

于 2020-12-08T20:26:05.533 に答える