如何:使用 Windows 窗体 BindingSource 组件创建查找表
查找表是一种数据表,其中有一列显示另一个相关表的记录数据。 在下面的过程中,使用了一个 ComboBox 控件来显示具有外键关系父、子表的字段。
为了帮助实现这两个表和这种关系的可视化,下面是一个父、子表的示例:
CustomersTable(父表)
CustomerID |
CustomerName |
---|---|
712 |
Paul Koch |
713 |
Tamara Johnston |
OrdersTable(子表)
OrderID |
OrderDate |
CustomerID |
---|---|---|
903 |
2004 年 2 月 12 日 |
712 |
904 |
2004 年 2 月 13 日 |
713 |
在这一情形下,表 CustomersTable 存储了需要显示和保存的实际信息。 但为了节省空间,此表省略了大部分数据。 另一张表 OrdersTable 只包含有关哪个客户 ID 号等同于哪个订单日期和订单 ID 的表面相关信息, 并没有提及客户的名称。
在 ComboBox 控件(Windows 窗体) 控件上设置了 4 种重要属性来创建查找表。
DataSource 属性包含查找表的名称。
DisplayMember 属性包含查找表中要作为控件文本(客户名称)显示的数据列。
ValueMember 属性包含查找表中具有存储信息(父表中的 ID 号)的数据列。
SelectedValue 属性根据 ValueMember 为子表提供查找值。
下面的过程演示了如何将窗体布局成为一个查找表,并将数据绑定到它上面的控件。 为了成功完成这个过程,必须像上面提到的一样有一个带有存在外键关系的父表和子表的数据源。
创建用户界面
从**“工具箱”**中将一个 ComboBox 控件中拖动到窗体上。
此控件将显示父表的列。
拖动其他的控件来显示子表的详细信息。 表中数据的格式决定了应当选择哪一种控件。 有关更多信息,请参见 根据功能列出的 Windows 窗体控件。
将一个 BindingNavigator 控件拖到窗体上,这将允许您定位子表中的数据。
连接数据并将其绑定到控件
选择 ComboBox 并单击“智能任务”标志符号以显示“智能任务”对话框。
选择**“使用数据绑定项”**。
单击**“数据源”**下拉框旁边的箭头。 如果以前已经为项目或窗体配置了数据源,将显示该数据源;否则,完成下面的步骤(此示例使用 Northwind 示例数据库中的 Customers 表和 Orders 表,并在括号中引用它们)。
单击**“添加项目数据源”**以连接到数据并创建一个数据源。
在**“数据源配置向导”欢迎页上单击“下一步”**。
在**“选择数据源类型”页上选择“数据库”**。
从**“选择数据连接”页上的可用连接列表中选择一个数据连接。 如果希望的数据连接不可用,则选择“新连接”**以创建一个新的数据连接。 有关更多信息,请参见“添加/修改连接”对话框(通用)。
单击**“是,保存连接”**将连接字符串保存到应用程序配置文件中。
选择要放置到应用程序中的数据库对象。 在这种情况下,选择具有外键关系的一个父表和一个子表(例如 Customers 和 Orders)。
如果愿意,可以替换默认的数据集名称。
单击**“完成”**。
在**“显示成员”**下拉框中,选择将在组合框中显示的列名(例如,ContactName)。
在**“值成员”**下拉框中,选择在子表中进行查找操作的列(例如,CustomerID)。
在**“选定值”下拉框中,定位到“项目数据源”**和刚创建的包含父表和子表的数据集。 选择与父表的值成员相同的子表属性(例如,Orders.CustomerID)。 将创建适当的 BindingSource、数据集和表适配器组件,并添加到窗体中。
将 BindingNavigator 控件绑定到子表的 BindingSource(例如,OrdersBindingSource)。
从想要显示的子表的 BindingSource(例如,OrdersBindingSource)中,将除了 ComboBox 和 BindingNavigator 外的控件绑定到详细信息字段上。