BindingSource - 使用BindingSource有什么好处

时间:2017-01-31 11:54:34

标签: c# datagridview 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;

2 个答案:

答案 0 :(得分:4)

其中一个优点是,如果您手动操作DataGridView中的值,则更改将反映在基础数据中。 (编辑:显然这也适用于普通的DataSource绑定。)

另一个优点是,您可以通过单击额外的空字段并编辑值来为基础数据添加条目(至少如果它是List)。这将添加一个新项目,而无需任何其他代码供您编写。

enter image description here

Detailed Data Binding Tutorial可能有助于更多地了解数据绑定的功能

修改

另一个区别是,对于基础数据的操作,例如向List添加项目,即使再次分配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;

并显示新项目

答案 1 :(得分:3)

BindingSource有许多好处,低于其中一些

1)当您使用bindingsource将数据绑定到任何控件时,它将生效双方。对数据源效果进行的任何更改以及控制效果数据源的任何更改。您不需要从控制中获取值并再次分配给数据源

2)您可以filterdatasource

一起应用bindingsource

3)您可以使用一个datasource绑定到many controls。例如,您有表Fruits,并将此table绑定到2 DataGridView以单独显示ApllesPeaches。使用bindingsource Filter属性,您可以单独显示ApplesPeaches

4)您可以使用bindingsource进行搜索,排序,编辑,过滤

你无法在基本列表中看到bindingsource的好处,但是除了基本列表之外,你还会看到bindingsource是如何有用的。

您可以获得更多通知Here