[英]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)您可以使用bindingsource
將filter
應用於datasource
3)您可以使用綁定到many controls
一個datasource
。 例如,您有表Fruits
,並將此table
綁定到2 DataGridView
以單獨顯示Aplles
和Peaches
。 使用bindingsource
Filter
屬性,您可以單獨顯示Apples
和Peaches
。
4)您可以使用bindingsource進行搜索,排序,編輯和過濾
您無法在基本列表中看到bindingsource的好處,但是除了基本列表之外,您還將看到bindingsource是如何有用的。
你可以在這里得到更多的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.