web-dev-qa-db-ja.com

BindingSource-BindingSourceを使用する利点は何ですか

このようなものを使用すると何が得られますか?

DataGridView dgvDocuments = new DataGridView();
BindingSource bindingSource = new BindingSource();
DataTable dtDocuments;

dtDocuments = MsSQL.GetDocuments(dtpOd.Value, dtpDo.Value);
bindingSource.DataSource = dtDocuments;
dgvDocuments.DataSource = bindingSource;

これの代わりに:

DataGridView dgvDocuments = new DataGridView();
DataTable dtDocuments;

dtDocuments = MsSQL.GetDocuments(dtpOd.Value, dtpDo.Value);
dgvDocuments.DataSource = dtDocuments;
9
Adam Filipek

BindingSourceには多くの利点があり、そのうちのいくつかを下回ります

1)bindingsourceを使用してデータを任意のコントロールにバインドすると、両側で有効になります。制御するデータソース効果に加えられた変更、および制御効果データソースへの変更。コントロールから値を取得して、データソースに再度割り当てる必要はありません

2)filterdatasourcebindingsourceに適用できます

3)many controlsにバインドされた1つのdatasourceを操作できます。たとえば、テーブルFruitsがあり、このtable2 DataGridViewにバインドして、ApllesPeachesを別々に表示します。 bindingsourceFilterプロパティを使用すると、ApplesPeachesを別々に表示できます。

4)bindingsourceを使用して、検索、並べ替え、編集、フィルタリングを行うことができます

基本リストではbindingsourceの利点を確認できませんが、bindingsourceの有用性を確認できるのは基本リストだけではありません。

あなたはより多くの情報を得ることができます ここ

3
kgzdev

利点の1つは、DataGridViewの値を手動で操作すると、変更が基になるデータに反映されることです。 (編集:明らかに、これは通常のDataSourceバインディングでも機能します。)

もう1つの利点は、余分な空のフィールドをクリックして値を編集することにより、基になるデータにエントリを追加できることです(少なくとも、それがListの場合)。これにより、追加のコードなしで新しいアイテムが追加されます。

enter image description here

この 詳細なデータバインディングチュートリアル 一般的なデータバインディングの機能にさらに光を当てるのに役立つかもしれません

編集:

もう1つの違いは、リストへのアイテムの追加など、基になるデータの操作は、たとえばDataGridViewで機能するDataSourceプロパティを再度割り当てても、ComboBoxに反映されないことです。ただし、BindingSourceの新しいインスタンスを再割り当てするとうまくいきます。

したがって、人のリストがある場合:

List<pers> list = new List<pers>();
BindingSource bs = new BindingSource();
bs.DataSource = perlist;
dataGridView1.DataSource = bs;

後でコードのリストに新しいアイテムを追加したい場合は、BindingSourceの新しいインスタンスを作成し、それをDataGridView.DataSourceに再割り当てします。

list.Add(new pers());

bs = new BindingSource();
bs.DataSource = perlist;

dataGridView1.DataSource = bs;

新しいアイテムが表示されます

4
Mong Zhu