Windows 窗体支持的数据源
更新:2007 年 11 月
传统上,在应用程序内使用数据绑定以利用数据库中存储的数据。使用 Windows 窗体数据绑定功能,可以访问数据库中的数据和其他结构中的数据(如数组和集合),但前提是已满足某些最低要求。
要绑定到的结构
在 Windows 窗体中,可以绑定到广泛的结构,从简单对象(简单绑定)到诸如 ADO.NET 数据表之类的复杂列表(复杂绑定)。对于简单绑定,Windows 窗体支持绑定到简单对象的公共属性。基于 Windows 窗体列表的绑定通常要求对象支持 IList 或 IListSource 接口。另外,如果要通过 BindingSource 组件进行绑定,则可以绑定到支持 IEnumerable 接口的对象。有关与数据绑定相关的接口的更多信息,请参见 与数据绑定相关的接口。
下面的列表演示 Windows 窗体中可绑定到的结构。
BindingSource
BindingSource 是最常见的 Windows 窗体数据源,并充当数据源和 Windows 窗体控件之间的代理。常规 BindingSource 使用模式如下:将控件绑定到 BindingSource,将 BindingSource 绑定到数据源(例如,ADO.NET 数据表或业务对象)。BindingSource 提供的服务可启用并提高数据绑定支持级别。例如,基于 Windows 窗体列表的控件(如 DataGridView 和 ComboBox)不直接支持到 IEnumerable 数据源的绑定,但是,可以通过 BindingSource 由绑定功能启用此方案。在这种情况下,BindingSource 会将数据源转换为 IList。简单对象
Windows 窗体支持使用 Binding 类型,将控件属性的数据绑定到对象实例的公共属性。在使用 BindingSource 时,Windows 窗体还支持将基于列表的控件(如 ListControl)绑定到对象实例。数组或集合
若要充当数据源,列表必须实现 IList 接口;它的一个示例将是作为 Array 类的实例的数组。有关数组的更多信息,请参见 如何:创建对象数组。有关集合的更多信息,请参见 对象之间的关系。通常,在创建要进行数据绑定的对象列表时,应当使用 BindingList<T>。BindingList<T> 是 IBindingList 接口的泛型版本。IBindingList 接口通过添加双向数据绑定所需的属性、方法和事件来扩展 IList 接口。
IEnumerable
如果要通过 BindingSource 组件进行绑定,则可以将 Windows 窗体控件绑定到仅支持 IEnumerable 接口的数据源。ADO.NET 数据对象
ADO.NET 提供大量适于绑定到的数据结构。这些结构在复杂程度和复杂性方面各不相同。DataColumn。DataColumn 是 DataTable 的基本构造块,因为表是由许多列组成的。每个 DataColumn 都有一个 DataType 属性,此属性确定该列保存的数据种类(例如,描述汽车的表中的汽车组成部分)。可以将控件(如 TextBox 控件的 Text 属性)简单绑定到数据表内的某列。
DataTable。DataTable 是 ADO.NET 中对包含行和列的表的表示形式。数据表中包含两个集合:DataColumn 和 DataRow,前者表示给定表中的数据列(这会最终确定可在该表中输入的数据种类),后者表示给定表中的数据行。可以将控件复杂绑定到数据表中包含的信息(例如将 DataGridView 控件绑定到数据表)。但是,当绑定到 DataTable 时,实际上是绑定到该表的默认视图。
DataView。DataView 是可筛选或排序的单个数据表的自定义视图。数据视图是复杂绑定控件使用的数据“快照”。可以简单绑定或复杂绑定到数据视图中的数据,但请注意,绑定到的是数据的固定“图片”而不是一个干净的、不断更新的数据源。
DataSet。DataSet 是数据库中表、关系和数据约束的集合。可以简单绑定或复杂绑定到数据集内的数据,但请注意,绑定到的是 DataSet 的默认 DataViewManager(请参见下一个项目符号的内容)。
DataViewManager。DataViewManager 是整个 DataSet 的自定义视图,它与 DataView 相似,但其中包括关系。使用 DataViewSettings 集合,可以为给定表的 DataViewManager 具有的任何视图设置默认筛选器和排序选项。