O'Reilly logo

ADO.NET Cookbook by Bill Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

3.4. Navigating Between Parent and Child Records Using a DataRelation

Problem

You want to navigate between the parent and child records in a hierarchical DataSet.

Solution

Use a DataRelation to find the child rows for a parent row in a related table, or to find the parent row for a child row in a related table.

The sample code starts by creating a DataSet containing the Orders and Order Details tables from the Northwind sample database and a relation between them. The code then iterates over the Orders and uses the relation to return all Order Detail rows for each order. Finally, the sample code retrieves the CustomerID field from the parent row and displays it for each child.

The C# code is shown in Example 3-4.

Example 3-4. File: NavigateDataRelationForm.cs

// Namespaces, variables, and constants using System; using System.Configuration; using System.Text; using System.Data; using System.Data.SqlClient; // Table name constants private const String ORDERS_TABLE = "Orders"; private const String ORDERDETAILS_TABLE = "OrderDetails"; // Relation name constants private const String ORDERS_ORDERDETAILS_RELATION = "Orders_OrderDetails_Relation"; // Field name constants private const String ORDERID_FIELD = "OrderID"; private const String PRODUCTID_FIELD = "ProductID"; private const String QUANTITY_FIELD = "Quantity"; private const String CUSTOMERID_FIELD = "CustomerID"; // . . . DataSet ds = new DataSet( ); SqlDataAdapter da; // Fill the Order table and add it to the DataSet. da = new SqlDataAdapter("SELECT ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required