我有一个 GUI,允许用户选择要查看/编辑的报告。当用户选择一个报表时,它会显示报表中的项目。该项目有许多属性 - 其中大部分都正确绑定。属性之一是 Owner,它绑定到 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
并且还通过使显示ToString
上的功能成为属性。不过,这似乎很老套——而且我认为我误解了一些基本的东西,因为它仍然无法正常运行。任何帮助将非常感激。Owner
OwnerName