У меня есть графический интерфейс, который позволяет пользователю выбрать отчет для просмотра / редактирования.Когда пользователь выбирает отчет, он показывает элементы в отчете.Предмет обладает множеством свойств, большинство из которых являются обязательными.Одним из свойств является Владелец, и оно привязано к 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
.Это кажется довольно глупым - и я думаю, что я неправильно понимаю что-то фундаментальное, так как оно все еще не работает должным образом.Любая помощь будет высоко ценится.