【发布时间】:2015-10-31 00:29:47
【问题描述】:
我的 DataGridView 中的 ComboBoxColumn 有问题。我用自己的类型列表填充 ComboBoxColumn 的 DataSource 并相应地设置 DataPropertyName、DisplayMember 和 ValueMember。
问题是:当我选择不同的值并选择另一个单元格时出现异常,因为 long 类型的值无法转换回对象。
用于 DropDown 值的类:
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;
}
}
我正在像这样填充 DropDown 和 Grid
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;
将数据填充到网格视图中工作正常,但是当我选择不同的单位时,我得到以下异常:
我可以做些什么来解决这个问题?我是否需要实现某些事件处理程序或创建自定义编辑控件?
【问题讨论】:
标签: c# datagridview