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 中的值,则更改将反映在基础数据中。
(编辑:显然这也适用于普通的数据源绑定。)
另一个优点是您可以通过单击额外的空白字段并编辑值来向基础数据添加条目(至少如果它是 List
)。这将添加一个新项目,无需您编写任何额外代码。
这 Detailed Data Binding Tutorial 可能有助于更清楚地了解数据绑定的一般功能
编辑:
另一个区别是,对基础数据的操作,例如将项目添加到列表中不会反映在 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;
将显示新项目
BindingSource
有很多好处,以下是其中的一些
1) 当你使用绑定源将数据绑定到任何控件时,它会在双方生效。对数据源所做的任何更改都会影响控件,以及对控件会影响数据源的任何更改。您不需要从控件中获取值并再次分配给数据源
2) 您可以使用 bindingsource
将 filter
应用于 datasource
3) 您可以将一个 datasource
绑定到 many controls
。例如,您有 table Fruits
,然后将此 table
绑定到 2 DataGridView
以分别显示 Aplles
和 Peaches
。使用 bindingsource
Filter
属性 您可以分别显示 Apples
和 Peaches
。
4) 您可以使用 bindingsource
进行搜索、排序、编辑、过滤
您无法在基本列表中看到 bindingsource 的好处,但除了基本列表之外,您还会看到 bindingsource 的用处。
您可以获得更多信息Here
是什么让我使用这样的东西:
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 中的值,则更改将反映在基础数据中。 (编辑:显然这也适用于普通的数据源绑定。)
另一个优点是您可以通过单击额外的空白字段并编辑值来向基础数据添加条目(至少如果它是 List
)。这将添加一个新项目,无需您编写任何额外代码。
这 Detailed Data Binding Tutorial 可能有助于更清楚地了解数据绑定的一般功能
编辑:
另一个区别是,对基础数据的操作,例如将项目添加到列表中不会反映在 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;
将显示新项目
BindingSource
有很多好处,以下是其中的一些
1) 当你使用绑定源将数据绑定到任何控件时,它会在双方生效。对数据源所做的任何更改都会影响控件,以及对控件会影响数据源的任何更改。您不需要从控件中获取值并再次分配给数据源
2) 您可以使用 bindingsource
filter
应用于 datasource
3) 您可以将一个 datasource
绑定到 many controls
。例如,您有 table Fruits
,然后将此 table
绑定到 2 DataGridView
以分别显示 Aplles
和 Peaches
。使用 bindingsource
Filter
属性 您可以分别显示 Apples
和 Peaches
。
4) 您可以使用 bindingsource
进行搜索、排序、编辑、过滤您无法在基本列表中看到 bindingsource 的好处,但除了基本列表之外,您还会看到 bindingsource 的用处。
您可以获得更多信息Here