注释
此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。
可以通过将数据绑定到 Windows 窗体向应用程序的用户显示数据。 若要创建这些数据绑定控件,请将项从 “数据源 ”窗口拖动到 Visual Studio 中的 Windows 窗体设计器上。
小窍门
如果 “数据源” 窗口不可见,可以通过选择“ 查看>其他 Windows>数据源”或按 Shift+Alt+D 打开它。 必须在 Visual Studio 中打开一个项目才能查看 “数据源” 窗口。
在拖动项之前,可以设置要绑定到的控件类型。 将显示不同的值,具体取决于是选择表本身还是单个列。 还可以设置自定义值。 对于表, “详细信息” 表示每个列都绑定到单独的控件。
BindingSource 和 BindingNavigator 控件
BindingSource 组件有两个用途。 首先,它将控件绑定到数据时提供抽象层。 窗体上的控件绑定到 BindingSource 组件,而不是直接绑定到数据源。 其次,它可以管理对象的集合。 将类型添加到 BindingSource 创建该类型的列表。
关于组件 BindingSource 的详细信息,请参阅:
BindingNavigator 控件提供了一个用户界面,用于浏览 Windows 应用程序显示的数据。
绑定到 DataGridView 控件中的数据
对于 DataGridView 控件,整个表绑定到该单个控件。 将 DataGridView 拖到窗体时,还会显示用于导航记录的工具条(BindingNavigator) 。 DataSet、TableAdapter、BindingSource和BindingNavigator在组件托盘中显示。 在下图中,还添加了 TableAdapterManager ,因为 Customers 表与 Orders 表有关系。 这些变量均在自动生成的代码中声明为表单类中的私有成员。 用于填充 DataGridView 的自动生成的代码位于事件处理程序中 Form_Load
。 保存数据以更新数据库的代码位于 BindingNavigator 的事件处理程序中Save
。 可以根据需要移动或修改此代码。
可以通过单击位于每个控件右上角的智能标记以自定义 DataGridView 和 BindingNavigator 的行为:
如果应用程序所需的控件在 “数据源 ”窗口中不可用,则可以添加控件。 有关详细信息,请参阅 “向数据源”窗口添加自定义控件。
还可以将项从 “数据源 ”窗口拖动到窗体上已有的控件上,以将控件绑定到数据。 已绑定到数据的控件将其数据绑定重置为最近拖动到该控件上的项。 若要成为有效放置目标,控件必须能够显示从“数据源”窗口拖动到其上的项的基础数据类型。 例如,将数据类型为 DateTime 的项拖动到 CheckBox 上是无效的,因为 CheckBox 无法显示日期。
将数据绑定到单个控件
将数据源绑定到 详细信息时,数据集中的每个列将绑定到单独的控件。
重要
请注意,上图是从“Customers”表的“Orders”属性拖动,而不是从“Orders”表拖动。 通过绑定到 Customer.Orders
属性, DataGridView 中生成的导航命令会立即反映在详细信息控件中。 如果从 Orders 表中拖动,则控件仍会绑定到数据集,但不会与 DataGridView 同步这些控件。
下图显示了默认数据绑定控件,这些控件是在“Customers”表中的“Orders”属性绑定到“数据源”窗口中的“详细信息”后添加到窗体的。
另请注意,每个控件都有一个智能标记。 此标记仅启用适用于该控件的自定义。