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

我无法找到与我的问题完全匹配的问题。

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

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

我在这里找到了答案。 在我的问题的第二个链接的答案中也提到了它。 将DataSource设置为非字符串的任何列表时,请将列的ValueType设置为typeof()

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

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

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