Отображать данные master-detail в DataGrid в C#

Во время разработки я добавил проект Database.mdb в проект, установил его свойство «Build Action» в «Содержимое» и установил его свойство «Копировать в выходной каталог» в «Копировать, если новый». Таким образом, база данных копируется в исполняемый каталог, поэтому программе легко найти его во время выполнения.

При запуске программы он выполняет следующий код для загрузки данных.

Этот код сначала объявляет два объекта OleDbDataAdapter для загрузки данных из таблиц Адреса и TestScores базы данных. Он также объявляет DataSet для хранения данных, когда он загружен в память.

Обработчик события Load формы загружает данные. Сначала он определяет строку подключения для подключения к базе данных. Затем он использует его для создания двух адаптеров данных. Их конструкторы принимают в качестве параметров SQL-запросы, используемые для получения данных и строки подключения.

Далее код создает новый DataSet и использует адаптеры данных для копирования данных из базы данных в DataSet. Строки Адреса и TestScores указывают имена таблиц, которые адаптеры данных должны указывать на данные внутри DataSet.

Затем программа определяет отношение master-detail (или parent / child) между двумя таблицами в DataSet. Первый параметр конструктора - это имя, которое должно иметь отношение. Другие два параметра дают столбцы в основных и подробных таблицах, которые должны быть связаны. После создания отношения код добавляет его в коллекцию DataSet Relations.

Затем программа определяет отношение master-detail (или parent / child) между двумя таблицами в DataSet. Первый параметр конструктора - это имя, которое должно иметь отношение. Другие два параметра дают столбцы в основных и подробных таблицах, которые должны быть связаны. После создания отношения код добавляет его в коллекцию DataSet Relations.

...

DataGrid на самом деле довольно умный элемент управления. Сначала он отображает две таблицы DataSet. Вы можете нажать на один, чтобы развернуть его. На картинке вверху этого сообщения DataGrid отображается таблица Addresses. Связь позволяет управляющему знать, что это основная запись, поэтому она отображает знак + рядом с каждой записью. Если вы нажмете знак «+», элемент управления отобразит ссылку на соответствующие записи этой записи в дочерней таблице TestScores. Нажмите эту ссылку, чтобы просмотреть эти записи.

Маленькие изображения в верхнем правом углу элемента управления DataGrid позволяют перемещаться по DataSet. Элемент DataGrid также позволяет редактировать данные.

Когда программа заканчивается, для сохранения изменений в данных используется следующий код.

Этот код сначала создает два объекта OleDbCommandBuilder, по одному для каждой таблицы. Эти объекты автоматически генерируют инструкции SQL INSERT, UPDATE и DELETE для сохранения изменений данных. Команды связаны с DataAdapters, переданными в конструкторы сборщиков.

Этот код сначала создает два объекта OleDbCommandBuilder, по одному для каждой таблицы. Эти объекты автоматически генерируют инструкции SQL INSERT, UPDATE и DELETE для сохранения изменений данных. Команды связаны с DataAdapters, переданными в конструкторы сборщиков.

...

Источник: http://csharphelper.com/blog/2016/02/display-masterdetail-data-in-a-datagrid-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *