HOW TO:存取關聯 DataTable 中的資料錄
當資料集有相關的資料表時,可以透過 DataRelation 物件使用其他資料表上的相關資料錄。 例如,可以使用包含 Customers 和 Orders 資料表的資料集。
您可以使用 DataRelation 物件來尋找相關的資料錄,其方法是在父資料表中呼叫 DataRow 的 GetChildRows 方法;這個方法會傳回相關子資料錄的陣列。 或者,您也可以在子資料表中呼叫 DataRow 的 GetParentRow 方法;這個方法會從父資料表傳回單一 DataRow。
這個說明頁面提供使用具型別資料集的範例。 如需在不具型別資料集中巡覽關聯性的詳細資訊,請參閱Navigating a Relationship between Tables。
注意事項 |
---|
如果您正在 Windows Form 應用程式中工作,而且使用資料繫結功能來顯示資料,則設計工具產生的表單可能會為應用程式提供足夠的功能。如需詳細資訊,請參閱將控制項繫結至 Visual Studio 中的資料上的頁面,尤其是 HOW TO:在 Windows Form 應用程式中顯示相關的資料和逐步解說:顯示 Windows Form 上的相關資料。 |
下列程式碼範例將示範如何在具型別資料集中向上及向下巡覽關聯性, 這些範例使用具型別 DataRow (NorthwindDataSet.OrdersRow) 和產生的 FindByPrimaryKey (FindByCustomerID) 方法來尋找所需的資料列,並傳回相關的記錄。 只有當您具有下列項目時,這些範例才會正確地編譯及執行:
名為 NorthwindDataSet (含 Customers 資料表) 的資料集之執行個體。
Orders 資料表
名為 FK_Orders_Customers 的關聯性 (與程式碼範圍可用的兩個資料表相關)。
此外,這兩個資料表必須已填入資料,才能傳回資料錄。
存取關聯資料錄
若要傳回所選父資料錄的子資料錄
呼叫特定 Customers 資料列的 GetChildRows 方法,並從 Orders 資料表傳回資料列陣列:
Dim customerID As String = "ALFKI" Dim orders() As NorthwindDataSet.OrdersRow orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID). GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow()) MessageBox.Show(orders.Length.ToString())
string custID = "ALFKI"; NorthwindDataSet.OrdersRow[] orders; orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers. FindByCustomerID(custID).GetChildRows("FK_Orders_Customers"); MessageBox.Show(orders.Length.ToString());
若要傳回所選子資料錄的父資料錄
呼叫特定 Orders 資料列的 GetParentRow 方法,並從 Customers 資料表傳回單一資料列:
Dim orderID As Integer = 10707 Dim customer As NorthwindDataSet.CustomersRow customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID). GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow) MessageBox.Show(customer.CompanyName)
int orderID = 10707; NorthwindDataSet.CustomersRow customer; customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders. FindByOrderID(orderID).GetParentRow("FK_Orders_Customers"); MessageBox.Show(customer.CompanyName);