BindingSource - 使用BindingSource有什么好处

Ada*_*pek 8 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;
Run Code Online (Sandbox Code Playgroud)

而不是这个:

DataGridView dgvDocuments = new DataGridView();
DataTable dtDocuments;

dtDocuments = MsSQL.GetDocuments(dtpOd.Value, dtpDo.Value);
dgvDocuments.DataSource = dtDocuments;
Run Code Online (Sandbox Code Playgroud)

kgz*_*dev 10

BindingSource 有很多好处,下面是其中一些

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

2)您可以应用filterdatasourcebindingsource

3)您可以使用datasource绑定到many controls. 比如你有表Fruits,并绑定该table2 DataGridView显示ApllesPeachesseperately。随着bindingsource Filter属性,你可以展示ApplesPeachesseperately。

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

您在基本列表上看不到 bindingsource 的好处,但是除了基本列表之外,您还会看到 bindingsource 的有用性。

您可以在此处获得更多信息


Mon*_*Zhu 5

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

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

在此处输入图片说明

这个详细的数据绑定教程可能有助于更多地了解数据绑定的一般功能

编辑:

另一个区别是对基础数据的操作,例如将项目添加到 List 不会反映在DataGridView即使DataSource再次分配属性中,例如在ComboBox. 但是重新分配 a 的新实例BindingSource就可以了。

因此,如果您有人员列表:

List<pers> list = new List<pers>();
BindingSource bs = new BindingSource();
bs.DataSource = perlist;
dataGridView1.DataSource = bs;
Run Code Online (Sandbox Code Playgroud)

后来想在代码中的列表中添加一个新项目,只需创建一个新实例BindingSource,将其重新分配给DataGridView.DataSource

list.Add(new pers());

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

dataGridView1.DataSource = bs;
Run Code Online (Sandbox Code Playgroud)

并且将显示新项目