Последовательность действий такова
1. Создать экземпляр самого набора данных (объект класса DataSet).
2. Создать пустой экземпляр таблицы (объект класса DataTable).
3. Создать столбцы таблицы (объекты класса DataColumn).
4. Добавить столбцы в коллекцию Columns таблицы.
5. Задать для таблицы первичный ключ (свойство PrimaryKey).
6. Если нужно, задать для таблицы ограничения столбцов, которые не входят в состав первичного ключа, но, тем не менее, должны содержать уникальные, неповторяющиеся значения (объект класса UniqueConstraint в коллекции Constraints таблицы).
7. Добавить созданную таблицу в коллекцию Tables набора.
8. Повторить пп. 2–8 для каждой из создаваемых таблиц набора данных.
9. Если необходимо установить отношение между таблицами набора данных, создать объект типа DataRelation, задать в нем родительскую и дочернюю таблицу, столбцы связи, правила каскадных воздействий и прочие параметры, а затем добавить созданный объект DataRelation в коллекцию Relations набора данных.
10. Повторить действия, изложенные в п. 9, для каждого отношения между таблицами, которое нужно добавить в набор данных.
|
|
//---создание таблицы dep
DataTable dep = new DataTable("Отделы");
//---создание столбцов таблицы:
DataColumn otd = new DataColumn("Отдел", System.Type.GetType("System.String"));
//---добавление столбцов в таблицу
dep.Columns.Add(otd);
//---задание первичного ключа таблицы
dep.PrimaryKey = new DataColumn[] { otd };
//---создание таблицы sotr
DataTable sotr = new DataTable("Сотрудники");
//---создание столбцов для Sotr
DataColumn TabN = new DataColumn("ТабН", System.Type.GetType("System.Int32"));
DataColumn fio = new DataColumn("Имя", System.Type.GetType("System.String"));
DataColumn ot = new DataColumn("Отдел", System.Type.GetType("System.String"));
//---добавление столбцов в таблицу sotr
sotr.Columns.Add(TabN);
sotr.Columns.Add(fio);
sotr.Columns.Add(ot);
//---задание первичного ключа таблицы sotr
sotr.PrimaryKey = new DataColumn[] { TabN };//массив
//---создание нетипизированного набора данных
DataSet myDS1 = new DataSet();
//---добавление таблиц в набор данных
myDS1.Tables.Add(dep);
myDS1.Tables.Add(sotr); //---создание отношения между таблицами dep и sotr
DataRelation drl = new DataRelation("FK_dep_sotr", myDS1.Tables["Отделы"].Columns["Отдел"], myDS1.Tables["Сотрудники"].Columns["Отдел"], true);
//---и добавление этого отношения в набор данных
myDS1.Relations.Add(drl);
//---связывание dataGrid и таблиц нетипизированного набора
dataGridView1.DataSource = myDS1;
dataGridView1.DataMember = "Отделы";
dataGridView2.DataSource = myDS1;
dataGridView2.DataMember = "Отделы.FK_dep_sotr";