Практическое руководство. Получение доступа к записям в связанных объектах DataTable
Если таблицы в наборе данных связанные, объект DataRelation может сделать доступными связанные записи в другой таблице. Например, может стать доступным набор данных, содержащий таблицы Customers и Orders.
Можно использовать объект DataRelation для поиска связанных записей путем вызова метода GetChildRows класса DataRow в родительской таблице; этот метод возвращает массив связанных дочерних записей. Или можно вызвать метод GetParentRow класса DataRow в дочерней таблице; этот метод возвращает одну DataRow из родительской таблицы.
Эта страница справки содержит примеры, использующие типизированные наборы данных. Сведения о перемещении отношений в нетипизированных наборах данных содержатся в разделе Навигация в DataRelations (ADO.NET).
Примечание
При работе в приложении Windows Forms и использовании средств привязки данных для отображения данных форма, сгенерированная конструктором, может предоставлять достаточно функциональных возможностей приложению.Дополнительные сведения см. на страницах Привязка элементов управления к данным в Visual Studio, в частности Практическое руководство. Отображение связанных данные в приложении Windows Forms и Пошаговое руководство. Отображение связанных данных на форме в приложении Windows.
Код в следующем примере демонстрирует перемещение отношений выше и ниже в типизированных наборах данных. Они используют типизированные DataRow (NorthwindDataSet.OrdersRow) и созданные методы FindByPrimaryKey (FindByCustomerID) для поиска нужной строки и возврата связанных записей. Примеры компилируются и работают только при наличии:
Экземпляра набора данных с именем NorthwindDataSet с таблицей Customers.
Таблицы Orders.
Отношения с именем FK_Orders_Customers, относящееся к двум доступным в коде таблицам.
Кроме того, обе таблицы должны быть заполнены данными для любых возвращаемых записей.
Доступ к связанным записям
Для возврата дочерних записей выбранной родительской записи
Вызовите метод GetChildRows определенной строки данных Customers, чтобы возвратить массив строк из таблицы 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());
Для возврата родительской записи выбранной дочерней записи
Вызовите метод GetParentRow определенной строки Orders, чтобы возвратить одну строку из таблицы 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);
См. также
Основные понятия
Привязка элементов управления к данным в Visual Studio
Другие ресурсы
Общие сведения о приложениях для работы с данными в Visual Studio
Подключение к данным в Visual Studio
Подготовка приложения к получению данных