簡體   English   中英

BindingSource - 使用BindingSource有什么好處

[英]BindingSource - what are the advantages of using 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;

其中一個優點是,如果您手動操作DataGridView中的值,那么更改將反映在基礎數據中。 (編輯:顯然這也適用於普通的DataSource綁定。)

另一個優點是,您可以通過單擊額外的空字段並編輯值來為基礎數據添加條目(至少如果它是List )。 這將添加一個新項目,而無需任何其他代碼供您編寫。

在此輸入圖像描述

這個詳細的數據綁定教程可能有助於更多地了解數據綁定的功能

編輯:

另一個區別是底層數據的操作,比如將一個項添加到List中,即使再次分配DataSource屬性(例如在ComboBox也可以),也不會反映在DataGridView中。 但是重新分配一個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;

並顯示新項目

BindingSource有許多好處,低於其中一些

1)當您使用bindingsource將數據綁定到任何控件時,它將生效雙方。 對數據源效果進行的任何更改以及控制效果數據源的任何更改。 您不需要從控制中獲取值並再次分配給數據源

2)您可以使用bindingsourcefilter應用於datasource

3)您可以使用綁定到many controls一個datasource 例如,您有表Fruits ,並將此table綁定到2 DataGridView以單獨顯示ApllesPeaches 使用bindingsource Filter屬性,您可以單獨顯示ApplesPeaches

4)您可以使用bindingsource進行搜索,排序,編輯和過濾

您無法在基本列表中看到bindingsource的好處,但是除了基本列表之外,您還將看到bindingsource是如何有用的。

你可以在這里得到更多的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM