错误:“DataGridViewComboBoxCell值无效。” DataSource是基本类型的列表

时间:2012-11-19 20:43:30

标签: c# datagridview

我找不到关于完全匹配我的问题的问题。

this questionthis question类似,我将DataSource上的DataGridViewComboBoxColumn设置为一系列内容。在我的情况下,事情是简单的类型,如双打和整数,所以谈论ValueMembers和DisplayMembers的答案并没有给我带来很多好处。当用户选择一个值时,我得到了可怕的“DataGridViewComboBoxCell值无效”错误。

我可以使用一个空的dataGridView_DataError处理程序来吞下错误,但这显然是一个不好的方法。

4 个答案:

答案 0 :(得分:19)

我找到了答案here。我在this answer中也提到了我问题中的第二个链接。将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);

答案 1 :(得分:0)

这对于子类型很挑剔。当ValueType为Int时,我仍然遇到错误,但DataSource包含一个SQLServer SMALLINT(DataSource上的Visual Studio 2010 Quick-Watch表示 是Int32!)。从SMALLINT更改DB列 - &gt; INT为我修好了。

答案 2 :(得分: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);

我希望我能帮助仍然存在此问题的人。

答案 3 :(得分:-1)

对我来说问题是我的数据源返回的值在组合框中不可用....我的组合有值1,2和3 ......但是数据源需要4。