1
我遇到了DataGridView中的ComboBoxColumn问题。我使用自己的类型列表填充ComboBoxColumn的DataSource,并相应地设置DataPropertyName
,DisplayMember
和ValueMember
。 问题是:当我选择一个不同的值并选择另一个单元格时,我得到一个异常,因为long类型的值不能转换回该对象。从DataGridViewComboBoxColumn获取自定义类型
一个用于下拉的价值观类:
public class Unit
{
public long? ID { get; set;}
public string Name { get; set;}
public Unit(long id, string name)
{
ID = id;
Name = name;
}
}
一个用于在DataGridView数据类:
public class Data
{
public long? Amount { get; set; }
public Unit ChosenUnit { get; set; }
public Data(long? amount, Unit unit)
{
Amount = amount;
ChosenUnit = unit;
}
}
我填充下拉列表和网格这样
List<Unit> units = new List<Unit>();
units.Add(new Unit(1, "grams"));
units.Add(new Unit(2, "kilograms"));
units.Add(new Unit(3, "tons"));
List<Data> data = new List<Data>();
data.Add(new Data(200, units[0]));
data.Add(new Data(2, units[1]));
data.Add(new Data(1, units[2]));
gridData.AutoGenerateColumns = false;
gridData.Columns.Add("Amount", "Amount");
gridData.Columns["Amount"].DataPropertyName = "Amount";
DataGridViewComboBoxColumn cboColUnits = new DataGridViewComboBoxColumn();
cboColUnits.Items.AddRange(units.ToArray());
cboColUnits.HeaderText = "Unit";
cboColUnits.DataPropertyName = "ChosenUnit";
cboColUnits.DisplayMember = "Name";
cboColUnits.ValueMember = "ID";
cboColUnits.ValueType = typeof(long?);
gridData.Columns.Add(cboColUnits);
gridData.DataSource = data;
填充数据插入到网格视图工作正常,但是当我选择diffent单元I出现以下情况例外:
我能做些什么来解决这个问题?我是否需要实现某些事件处理程序或创建自定义编辑控件?
作品完美的感谢 –