DataSourceプロパティを設定することにより、DataGridViewコントロールをビジネスオブジェクトのバインディングリストに直接バインドできます。私のビジネスオブジェクトはINotifyPropertyChangedを実装しているため、新しいアイテムがバインディングリストに追加されるか、既存のアイテムが更新されると、DGVが更新されます。
単一レコードの処理に関しては、ビジネスオブジェクトをテキストボックスやその他の関連するコントロールにバインドできます。
以下のリンクで説明されているように、BindingListから派生し、CustomBindingListクラスを作成して、IBindableの必要なメソッドを実装することもできます。http: //msdn.microsoft.com/en-us/library/aa480736.aspx
あるいは、BindingSourceの使用を推奨する人を見たことがあります。BindingSourceのデータソースはビジネスオブジェクトであり、DGVのデータソースはBindingSourceです。
いずれにせよ、BindingSourceに基づくことは私に提供しません:
- フィルタリング(フィルターは機能しません)。実装は私が提供する必要があります。
- 並べ替えと検索が機能しません。実装は私が提供する必要があります。
では、なぜBindingSourceアプローチが推奨されるのでしょうか。
全体像:オブジェクト指向の概念とC#は初めてです。データベースアプリケーションの操作。Winforms。これまでのところ、DataSet/DataTableアプローチのみを使用してきました。今、私自身のカスタムクラスを作成して使用しようとしています。
通常、マスター/詳細フォームがあります。DGVの詳細行をクリックすると、そのレコードを別のウィンドウで編集したいと思います。したがって、DGVのその行で表されるリストアイテムのハンドルを取得する必要があります。そのための解決策を見つけようとすることで、私はこの点とこの疑問に直面しました。
私がやりたいことを考えると、どちらのアプローチが優れているのか、そしてその理由は何ですか?
私はこれに非常に慣れていないので、ここにいくつかのポインタが本当に役立ちます。