7

我在 SO 上找不到与我的问题完全匹配的问题。

这个问题这个问题类似,我将DataSourcea设置DataGridViewComboBoxColumn为一个事物列表。在我的情况下,事情是简单的类型,比如双精度和整数,所以关于 ValueMembers 和 DisplayMembers 的答案对我没有多大好处。当用户选择一个值时,我得到可怕的“DataGridViewComboBoxCell 值无效”错误。

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

4

4 回答 4

21

我在这里找到了答案。在我的问题中第二个链接的答案中也提到了这一点。将 设置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 时,我仍然遇到错误,但 DataSource 包含 SQLServer SMALLINT(DataSource 上的 Visual Studio 2010 Quick-Watch 说它Int32 !)。从 SMALLINT -> INT 更改 DB 列为我修复了它。

于 2013-11-07T00:57:10.643 回答
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 回答
0

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

于 2017-05-29T19:05:28.473 回答