ユーザーがレポートを選択して表示/編集できるようにする GUI があります。ユーザーがレポートを選択すると、レポート内のアイテムが表示されます。Item には多くのプロパティがあり、そのほとんどは適切にバインドされています。プロパティの 1 つは 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