Шаг 116 - Связи добавляем realtion

И так в прошлых шагах мы научились отображать данные из таблицы в DataGrid, но возникает вопрос, что делать если у нас есть две таблицы master/details? Всё весьма просто в DataSet можно добавлять реляционные связи. Для начала добавим в Dataset который мы создали в прошлых шагах ещё одну таблицу Сustomers со следующими полями:

Итого мы имеем две таблицы.

gif/116_1.gif (2378 b)

Создаём таблицу.

DataTable Orders = new DataTable("Orders");
column = new DataColumn();
......
......
myDataSet.Tables.Add(Orders);

Создали таблицу потом, добавим в неё записи. Не забудьте подтвердить все изменения в конце

myDataSet.Tables["Customers"].AcceptChanges();
myDataSet.Tables["Orders"].AcceptChanges();

Теперь нам нужно создать в DataSet реляционные отношения. Для этого нам нужны два столбца из двух таблиц, получим их

System.Data.DataColumn column1; 
System.Data.DataColumn column2; 
column1 = myDataSet.Tables["Customers"].Columns["customer_id"];
column2 = myDataSet.Tables["Orders"].Columns["customer_id"];

И создадим relation. В DataSet есть проперти Relations, которое возвращает коллекцию объектов DataRelation. Объект DataRelation имеет четыре конструктора:

public DataRelation(string, DataColumn[], DataColumn[])
public DataRelation(string, DataColumn, DataColumn)
public DataRelation(string, DataColumn[], DataColumn[], bool)
public DataRelation(string, DataColumn, DataColumn, bool)

Остановимся на последнем конструкторе первый параметр название отношения, вторые два столбцы таблиц. Третий пока не трогаем, но установим его в true;

System.Data.DataRelation rel;
rel = new System.Data.DataRelation("товары", column1, column2, true);
И добавим её
myDataSet.Relations.Add(rel);

Теперь откомпилируем проект и запустим его, напротив каждой записи мы видим плюсик, понажимайте по ним и на закладки которые повыпадали при этом, ну как понравилось? Дельфи отдыхает !!!


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Leonid Molochniy - 18.10.2001