我有一个GUI,允许用户选择要查看/编辑的报告。当用户选择报告时,它会在报告中显示项目。该项目有很多属性 - 其中大部分都具有正确的绑定。其中一个属性是Owner,并且它绑定到ComboBoxColumn。将对象集合绑定到DataGridView中的ComboboxColumn
- 报告
- 项目
- 所有者
- 项目
我已经做了非常相似,这几次的东西,有没有问题,当我设置DataPropertyName
, DataSource
,ValueMember
和DisplayMember
。唯一不同的是,这一次,而不是Item
类型具有OwnderID
它实际上有一个Owner
对象的实例。
我看到了一个建议,在另一篇文章中给予列表中的必然自引用属性,允许他们返回自己的设置ValueMember
不过的目的的项目来解决这个问题,当我绑定它是这样的:
OwnerColumn.DataPropertyName = "Owner"
OwnerColumn.DataSource = ownersBindingSource1
OwnerColumn.ValueMember = "Self"
OwnerColumn.DisplayMember = "OwnerName"
我得到了很多类似的错误:
Unable to cast object of type 'System.String' to type 'Owner'.
和:
The following exception occurred in the DataGridView:
System.ArgumentException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
我能够通过这样的结合也让周围的一些这些错误的:
OwnerColumn.DataPropertyName = "Owner"
OwnerColumn.DataSource = ownersBindingSource1
,并通过使Owner
显示屏上的ToString
功能OwnerName
财产。尽管这看起来很诡异 - 但我认为我误解了一些基本的东西,因为它仍然无法正常工作。任何帮助将非常感激。