(原创文章·转载请注明来源:http://blog.csdn.net/hulihui)
在.NET的Windows Forms数据处理应用中,经常需要处理主从表情况。例如:SQL Server 2000的Northwind数据库Custumers表和Orders表中,一个客户对应多个定单(用关系数据库理论的ER概念模型描述,客户实体与定单实体是1:N的关系)。编程时,可以用一个DataGridView显示Customers记录(主表),另一个DataGridView显示当前Customer的定单明细(从表)。当点选主表DataGridView的Customers记录时,从表DataGridView自动过滤显示对应CustomerID的全部Orders记录(见上图)。C# 2005/2008中的BindingSource组件和DataSet/DataRelation类提供了一个简便的处理方法,见如下实现步骤和示例代码。
- 建立一个DataSet数据集对象,使用DataAdaper填充两个DataTable表:Customers和Orders,分别包含全部的Customers记录和Orders记录。此外,也可直接创建和填充合适的数据表,参见文后附加的代码;
- 以Custumers的主键CustomerID和Orders的外键CustomerIdD建立一个主从DataRelatio