Этап 7. Просмотр дочерних данных
На данном этапе приложение позволяет просматривать и изменять данные таблицы Заказы. Доработаем форму так, чтобы можно было работать с составом заказов. 1. Откройте в конструкторе класс DataSet со строгим контролем типов (созданный на 1-ом этапе данной лабораторной работе) – это можно сделать, например, дважды щелкнув по объекту DataSet в окне SolutionExplorer. 2. Конструктор класса DataSet со строгим контролем типов автоматически добавляет объект DataRelation между двумя таблицами DataSet, но не связывает новый объект DataRelation с объектом ForeignKeyConstraint. Дважды щелкните объект DataRelation между таблицами Заказ и Состав_заказа в конструкторе, выберите опцию Both Relation And Foreign Key Constraint и задайте свойствам Update Rule и Delete Rule значения Cascade. 3. Закройте конструктор окна DataSet с сохранением 4. Теперьпосмотрите содержимое объекта DataSet со строгим контролем типов в окне Data Sources. Вы увидите два отдельных узла состав_заказа, как на рисунке 18: один из узлов — брат, а второй — сын узла «Заказ». Рисунок 18 – Источник данных Если пытаться перетащить один из узлов на форму, то произойдет создание объектов DataGndView, TableAdapter, BindingSource для работы с составом_заказов. Разница между показанными на рисунке двумя объектами состоит в том, что при перетаскивании узла состав_заказа БРАТ элемент управления DataGridView выводит на экран все записи таблицы состав_заказа. Если перетащить узел состав_заказа, который приходится узлу заказ сыном, то в DataGridView выводится на экран будут только записи таблицы состав_заказа для нужного нам заказа. ПОЭТОМУ перетащите на вашу форму объект-сын состав_заказов. 5. Для объекта DataSet необходимо, чтобы записи в таблице состав_заказа соответствовали выбранному в данный момент в верхней части формы значению таблицы Заказ. Попробуйте запустить форму. Запустив форму в таком виде, как мы сейчас ее сделали, вы получите сообщение об исключительной ситуации. Чтобы указанного сообщения не было, необходимо изменить код таким образом, чтобы код для получения информации о составе заказа появлялся после запроса информации о заказе. Откройте код события Load формы, и исправьте код следующим образом (возможно имена объектов у вас будут другими). Порядок вызова метода Fill должен быть именно таким (сначала для родительской Заказ, потом для дочерней состав_заказов) Me.ЗаказTableAdapter.Fill(Me.Mmm_sqlDataSet3.заказ) Me.Состав_заказаTableAdapter.Fill(Me.Mmm_sqlDataSet3.состав_заказа)
|