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出現以下情況例外:
我能做些什麼來解決這個問題?我是否需要實現某些事件處理程序或創建自定義編輯控件?
作品完美的感謝 –