我找不到关于完全匹配我的问题的问题。
与this question和this question类似,我将DataSource
上的DataGridViewComboBoxColumn
设置为一系列内容。在我的情况下,事情是简单的类型,如双打和整数,所以谈论ValueMembers和DisplayMembers的答案并没有给我带来很多好处。当用户选择一个值时,我得到了可怕的“DataGridViewComboBoxCell值无效”错误。
我可以使用一个空的dataGridView_DataError处理程序来吞下错误,但这显然是一个不好的方法。
答案 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。