BindingSource 组件概述
BindingSource 组件用于简化将控件绑定到基础数据源的过程。 BindingSource 组件既可以作为一个导管,也可以作为一个数据源,其他控件绑定到该数据源。 在将命令传递到基础数据列表时,该组件为您的窗体提供抽象的数据连接。 此外,您还可以直接向该组件添加数据,这样,该组件本身起数据源的作用。
BindingSource 组件作为媒介
BindingSource 组件作为窗体上部分或全部组件的数据源。 在 Visual Studio 中,可以通过 DataBindings 属性将 BindingSource 绑定到控件,该属性可在**“属性”**窗口中访问。 有关更多信息,请参见 如何:使用设计器将 Windows 窗体控件与 BindingSource 组件进行绑定 和 如何:使用设计器将 Windows 窗体控件与 BindingSource 组件进行绑定 和 如何:使用设计器将 Windows 窗体控件与 BindingSource 组件进行绑定 和 如何:使用设计器将 Windows 窗体控件与 BindingSource 组件进行绑定.
可以将 BindingSource 组件绑定到两种数据源:一是简单数据源,如对象的单个属性或 ArrayList 这样的基本集合;二是复杂数据源,如数据库表。 BindingSource 组件作为一个媒介提供绑定和货币管理服务。 在设计或运行时,通过将 BindingSource 组件的 DataSource 和 DataMember 属性分别设置为数据库和表,可以将该组件绑定到复杂数据源。 下面的说明演示在现有的数据绑定结构中,BindingSource 组件适合放在何处。
提示
在设计时,某些操作(如将数据库表从数据窗口拖动到空白窗体)将创建 BindingSource 组件,将该组件绑定到基础数据源,然后添加数据识别控件整体操作。 有关更多信息,请参见 “显示数据”概述 和 “显示数据”概述 和 在 Visual Studio 中将 Windows 窗体控件绑定到数据 和 在 Visual Studio 中将 Windows 窗体控件绑定到数据.
BindingSource 组件作为数据源
如果您没有首先指定要绑定到的列表就开始将项添加到 BindingSource 组件,该组件将被用作列表样式的数据源,并接受添加的这些项。
另外,您还可以编写代码,通过 AddingNew 事件提供自定义“AddNew”功能,当 AddNew 方法在项被添加到列表之前被调用时会引发该事件。 有关更多信息,请参见 BindingSource 组件体系结构。
导航
对于需要在窗体上定位数据的用户,BindingNavigator 组件与 BindingSource 组件配合使您能够定位和操作数据。 有关更多信息,请参见 BindingNavigator 控件(Windows 窗体)。
数据操作
BindingSource 用作所有绑定的 CurrencyManager,因此可以提供对有关数据源的货币和位置信息的访问。 下表显示 BindingSource 组件为访问和操作基础数据所提供的成员。
成员 |
说明 |
---|---|
Current 属性 |
获取数据源的当前项。 |
Position 属性 |
获取或设置基础列表中的当前位置。 |
List 属性 |
获取 DataSource 计算和 DataMember 计算列表。 如果未设置 DataMember,则返回由 DataSource 指定的列表。 |
Insert 方法 |
将项插入列表的指定索引处。 |
从列表中移除当前项。 |
|
EndEdit 方法 |
将挂起的更改应用于基础数据源。 |
CancelEdit 方法 |
取消当前的编辑操作。 |
AddNew 方法 |
在基础列表中添加一个新项。 如果数据源实现了 IBindingList 并从 AddingNew 事件返回一个项,则添加该项。 否则,请求将被传递到列表的 AddNew 方法。 如果基础列表不是一个 IBindingList,会通过它的公共默认构造函数自动创建该项。 |
排序和过滤
通常应使用排序的或过滤的数据源视图。 下表显示 BindingSource 组件数据源提供的成员。
成员 |
说明 |
---|---|
Sort 属性 |
如果数据源为 IBindingList,则获取或设置用于排序和排序顺序信息的列名。 如果数据源为 IBindingListView,并支持高级排序,则获取用于排序和排序顺序信息的多个列名。 |
Filter 属性 |
如果数据源是 IBindingListView,则会获取或设置用于过滤所查看行的表达式。 |