DataSourceプロパティを設定することで、DataGridViewコントロールをビジネスオブジェクトのバインディングリストに直接バインドできます。私のビジネスオブジェクトはINotifyPropertyChangedを実装しているので、DGVは新しい項目がBinding Listに追加されるか、既存の項目が更新されたときに更新されます。バインディングリスト<business obj>をデータソースとしてバインディングソースを使用する利点は何ですか?
単一レコードの処理に関しては、ビジネスオブジェクトをテキストボックスやその他の関連するコントロールにバインドできます。
は私もするBindingListから派生し、下記のリンクで説明したように、IBindableの必要なメソッドを実装するCustomBindingListクラスを作成することができます。 http://msdn.microsoft.com/en-us/library/aa480736.aspx
また、私が見てきた人々がのBindingSourceを使用することをお勧めします。 BindingSourceのデータソースはビジネスオブジェクトであり、DGVのデータソースはBindingSourceです。 BindingSourceにそれを基づかいずれの場合においても
は、私を提供していません:- フィルタリング(フィルターは動作しません)。実装は私によって提供される必要があります。
- 並べ替えと検索が機能しません。実装は私によって提供される必要があります。
なぜ、BindingSourceのアプローチが推奨されるのですか?
広い画像: OOPSの概念とC#の新機能です。データベースアプリケーションの操作。 Winforms。これまでのところDataSet/DataTableのアプローチしか使用していません。今では自分のカスタムクラスを作成して使用しようとしています。
通常、マスター/詳細フォームがあります。 DGVのDetail行をクリックすると、そのレコードを別のウィンドウで編集したいと思います。だから、私はDGVのその行で表されるリスト項目のハンドルを取得する必要があります。そのための解決策を見つけようとすると、私はこの点とこの疑念に私をもたらしました。
私がしたいことを考えれば、どのアプローチがより良いのでしょうか?
ここでは、私が非常に新しくなったので、いくつかの参考になるでしょう。
[C#DataGridView.DataSourceのBindingSourceとの使用の違い]の可能な複製](http://stackoverflow.com/questions/4433281/c-sharp-datagridview-datasource-difference-between-using-bindingsource-and-not ) –