2012-11-19 39 views
7

我找不到SO上的问题,恰好与匹配我的问题。错误:“DataGridViewComboBoxCell值无效。” t DataSource是基本类型的列表

this questionthis question类似,我将DataSource设置为DataGridViewComboBoxColumn为一系列事物。在我的情况下,事物是简单的类型,如双打和整数,所以关于ValueMembers和DisplayMembers的答案对我来说并没有什么好处。当用户选择一个值时,我得到可怕的“DataGridViewComboBoxCell值无效”错误。

我可以吞下一个空的dataGridView_DataError处理程序的错误,但这显然是一个糟糕的路要走。

回答

18

我找到了答案here。在我的问题中的第二个链接中也提到了this answer。当设置DataSource到的任何东西的清单,这不是一个字符串,设置列的ValueTypetypeof(<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为Int时,我仍然遇到错误,但DataSource包含一个SQLServer SMALLINT(Visual Studio 2010快速监视DataSource表示 Int32!)。更改来自SMALLINT - > INT的数据库列为我解决了它。

0

,我的问题是,我的数据源是返回值是不是在组合框中可用....我的组合有值1,2和3 ...但数据源希望4.

相关问题