DataGridView数据源

时间:2013-03-19 03:17:45

标签: c# data-binding datagridview

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

1.将列表直接用于数据源

grdSomeList.DataSource = GetListSomeObjects();

2.使用绑定源

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

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

1 个答案:

答案 0 :(得分:5)

如果是单向绑定,请使用第一种方法。

如果是双向绑定,则使用第二种方式,即当用户更改DataGridView Cells时,更改将保留/保留在GetListSomeObjects()数据源中。

您尚未指定这是WPF,Winforms,Web,但您可以在BindingSource'sOne, Two & etc Way Binding上阅读更多内容:

TwoWay

导致对source属性或target属性的更改以自动更新另一个属性。此类绑定适用于可编辑表单或其他完全交互式UI方案。

OneWay

绑定源(源)更改时更新绑定目标(目标)属性。如果绑定的控件是隐式只读的,则这种类型的绑定是合适的。例如,您可以绑定到股票代码等来源。或者,您的目标属性可能没有为进行更改而提供的控制接口,例如表的数据绑定背景颜色。如果不需要监视目标属性的更改,则使用OneWay绑定模式可以避免TwoWay绑定模式的开销。

OneTime

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

OneWayToSource

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