Практическое руководство. Получение доступа к записям в связанных объектах DataTable

Если таблицы в наборе данных связанные, объект DataRelation может сделать доступными связанные записи в другой таблице. Например, может стать доступным набор данных, содержащий таблицы Customers и Orders.

Можно использовать объект DataRelation для поиска связанных записей путем вызова метода GetChildRows класса DataRow в родительской таблице; этот метод возвращает массив связанных дочерних записей. Или можно вызвать метод GetParentRow класса DataRow в дочерней таблице; этот метод возвращает одну DataRow из родительской таблицы.

Эта страница справки содержит примеры, использующие типизированные наборы данных. Сведения о перемещении отношений в нетипизированных наборах данных содержатся в разделе Перемещение по связям DataRelations.

Примечание

При работе в приложении 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