So, I have a DataGridView using as datasource a BindingList
DataGridView.DataSource = new BindingList<Car>{...}
Where
public class Car { public ColorName Color { get; set;} }
with
public class ColorName { public int Id {get; set;} public string Name{get; set;} }
and I use a Combobox column:
DataGridViewComboBoxColumn colorNameDataGridViewTextBoxColumn; colorNameDataGridViewTextBoxColumn.DataPropertyName = 'Color'; colorNameDataGridViewTextBoxColumn.HeaderText = 'Color'; colorNameDataGridViewTextBoxColumn.Name = 'Color'; colorNameDataGridViewTextBoxColumn.DisplayMember = 'Name'; colorNameDataGridViewTextBoxColumn.ValueMember = 'Id'; colorNameDataGridViewTextBoxColumn.DataSource = new ColorName[] {...};
How can I get this to work ?! Now I get an exception because I think it tries to cast the Id to ColorName.
I tried with an empty ValueMember or adding a direct cast operator to ColorName class but can’t get it to work.
Sure I can use an int in the Car class to represent the color but is not as nice.
As you probably guessed those classes are in fact Castle Project ActiveRecord-s.
Any ideas are welcome !
Did you try ValueMember = ” or ValueMember = ‘.’?
Really hacky, but you could add a property on
ColorNamethat is itself? (perhaps via a partial class)then set `ValueMember = ‘Self’;’
Other than that, you’d probably need a
TypeConverterThe other option might be to override
ToString()onColorNameto returnName, and not have a value/display member?(update: no it doesn’t)
Have checked, andToString()seems to work :and just don’t set a
DisplayMemberor aValueMember.Well whad’ya know – the ‘Self’ trick works too …