4

我有一个 DataGridView 和一个从 SQL 表填充的一些对象的列表。我使用两种方法将列表绑定到网格。

1.直接使用列表到数据源

grdSomeList.DataSource = GetListSomeObjects();

2.通过绑定源使用

_bsSomeList = new BindingSource();
_bsSomeList .DataSource = GetListSomeObjects();
grdSomeList.DataSource = _bsSomeList ;

绑定数据源的最佳实践是什么?这两者背后是否有一些具体的原因?

4

1 回答 1

5

如果是单向绑定,则使用第一种方式。

如果是双向绑定,则使用第二种方式,这意味着当用户更改 DataGridView 单元格时,更改将保留/持久在GetListSomeObjects()数据源中。

您尚未指定这是 WPF、Winforms、Web,但您可以阅读更多关于BindingSourceOne、Two & 等方式绑定的信息:

双向

导致对源属性或目标属性的更改自动更新另一个。这种类型的绑定适用于可编辑的表单或其他完全交互的 UI 场景。

单程

当绑定源(源)改变时更新绑定目标(target)属性。如果被绑定的控件是隐式只读的,则这种类型的绑定是合适的。例如,您可以绑定到诸如股票代码之类的源。或者您的目标属性可能没有提供用于进行更改的控制界面,例如表格的数据绑定背景颜色。如果不需要监听目标属性的变化,使用 OneWay 绑定方式可以避免 TwoWay 绑定方式的开销。

一度

在应用程序启动或数据上下文更改时更新绑定目标。如果您正在使用适合使用当前状态的快照或数据是真正静态的数据,则这种类型的绑定是合适的。如果您想使用源属性中的某个值初始化目标属性并且事先不知道数据上下文,则这种类型的绑定也很有用。这本质上是一种更简单的 OneWay 绑定形式,可在源值不变的情况下提供更好的性能。

OneWayToSource

当目标属性更改时更新源属性。Default 使用绑定目标的默认 Mode 值。每个依赖属性的默认值都不同。通常,用户可编辑的控件属性(例如文本框和复选框的属性)默认为双向绑定,而大多数其他属性默认为单向绑定。确定依赖属性默认绑定单向还是双向的一种编程方法是使用 GetMetadata 获取属性的属性元数据,然后检查 BindsTwoWayByDefault 属性的布尔值。

于 2013-03-19T03:22:33.920 回答