Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Заполнение набора данных и создание реляционных связей




Добавление элементов управления

В этом разделе примера мы добавим на форму два элемента управления. Это будут DataGrid для отображения информации и Button для получения записей из базы данных.

1. На вкладке Windows Form окна Toolbox, выделите элемент управления DataGrid и перенесите его на форму.

2. Аналогично перенесите элемент управления Button. Войдите в окно Properties этого элемента и в поле свойства Text наберите значение Загрузить.

Расположите элементы управления на форме как показано на рис. 39. На этом работа с элементами управлении будет закончена. Все остальные действия будут выполнены в программном коде.

Рис 39. Расположение элементов управления на форме

 

В нашем наборе данных будет содержаться три таблицы, которые в базе данных имеют отношения "один ко многим". Однако, набор данных — это пассивный контейнер, который не может использовать те связи между таблицами, которые заданы в базе данных. В объекте DataSet реляционные отношения между таблицами нужно будет задавать явно, через его свойство Relations.

Для начала нужно будет создать экземпляр класса DataSet, открыть соединение и заполнить набор данных. Причем в объекте DataSet будет содержаться три самостоятельных таблицы: Customers, Orders и Order Details. Несмотря на то, что таблицы на уровне базы данных имеют реляционные связи, в DataSet этих связей не будет, все три таблицы будут совершенно независимы друг от друга. Реляционные связи нужно создать самим, воспользовавшись свойством Relations объекта DataSet. В нашем примере главной родительской таблицей является таблица с информацией о заказчиках — Customers. Для нее дочерней таблицей является таблица с информацией о заказах — Orders. Эти две таблицы имеют связующее ключевое поле CustomerID. В свою очередь таблица Orders является родительской таблицей по отношению к таблице с данными о деталях заказов— Order Details. Эти две таблицы имеют связующее ключевое поле OrderID. Схема связей между таблицами приведена на рис. 40.

 

Рис 40. Схема связей между таблицами Customers, Orders и Order Details

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

1-Дважды щелкните мышью на кнопке формы, чтобы создать обработчик cобытия нажатия кнопки Buttonl_Click.

2. В обработчике события выполним следующие действия:

• создадим экземпляр класса DataSet (набор данных ds);

• откроем соединение;

• заполним данными объект DataSet (набор данных ds);

• закроем соединение;

• создадим реляционную связь между таблицами customers, Orders;

• созданим реляционную связь между таблицами Orders и Order Details;

• укажем объекту DataGrid в качестве источника данных набор данных ds;

• зададим объекту DataGrid отобразить таблицу customers.

Ниже приведен соответствующий программный код (листинг).

Листинг

' Visual Basic

Private Sub Buttonl_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles Buttonl.Click

Dim ds As New DataSet ()

SqlConnectionl.Open()

SqlDataAdapterl.Fill(ds, "Customers")

SqlDataAdapter2.Fill(ds, "Orders")

SqlDataAdapter3.Fill(ds, "OrderDetails")

SqlConnectionl.Close()

ds.Relations.Add("Заказы",ds.Tables("Customers").Columns("CustomerlD"), _

ds.Tables("Orders").Columns("CustomerlD"))

ds.Relations.Add("Детали заказа",ds.Tables("Orders").Columns("OrderlD"), _

ds.Tables("OrderDetails").Columns("OrderlD"))

DataGridl().DataSource=ds

DataGridl().DataMember="Customers"

End Sub

 

// C#

private void Buttonl_Click (object sender, System.EventArgs e)

{

DataSet ds;

SqlConnectionl.Open ();

SqlDataAdapterl.Fill(ds, "Customers");

SqlDataAdapter2.Fill(ds, "Orders");

SqlDataAdapter3.Fill(ds, "OrderDetails");

SqlConnectionl.Close ();

ds.Relations.Add("Заказы",ds.Tables("customers").Columns("CustomerlD"),

ds.Tables("Orders").Columns("CustomerlD"));

ds.Relations.Add("Детали заказа", ds.Tables("Orders").Columns("OrderlD"),

ds.Tables("OrderDetails").Columns("OrderlD")); DataGridl().DataSource=ds;

DataGridl().DataMember="Customers";

}

Тестирование приложения

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

Для проверки работы приложения выполните следующие действия.

1. Нажмите клавишу <F5> для запуска приложения.

2. Когда форма будет отображена на экране, вы увидите пустой элемент DataGrid. Нажмите кнопку Загрузить, после этого элемент управления DataGrid заполнится записями из таблицы Customers, содержащей сведения о заказчиках (рис. 41).

Рис 41. Отображение в DataGrid информации из родительской таблицы Customers

 

Наименования колонок объекта DataGrid получат значения от наименований соответствующих полей базы данных. В первой колонке будет располагаться указатель текущей записи и знак (+), позволяющий получить доступ к записям дочерних таблиц. Щелкните мышью на значке (+) в любой строке, в DataGrid появится дополнительная строка с ссылкой на содержимое дочерней таблицы (в нашем случае появиться ссылка с надписью Заказы (рис. 42).

Рис 42. Отображение в DataGrid ссылки на дочернюю таблицу
с информацией о заказах

 

Как видно из рис. 42, мы получили возможность просмотреть все заказы клиента с именем ANTON. Нажмите на ссылку Заказы, после этого запись с информацией о заказчике ANTON будет перенесена в верхнюю часть DataGrid, а в самом элементе управления появятся записи из дочерней таблицы Orders (рис. 43). В нашем случае будут отображены сведения о заказах, сделанных заказчиком anton.

 

Рис 43. Отображение в DataGrid информации
из родительской таблицы Customers и дочерней таблицы Orders

В левой крайней колонке снова будет виден значок с надписью (+), нажав на него, мы увидим еще одну строку со ссылкой Детали заказа (рис. 44).

Рис 44. Отображение в DataGrid ссылки на дочернюю таблицу с информацией о деталях заказов

Тоесть теперь, нажав на ссылку Детали заказа мы сможем получить содержимое любого заказа. При этом в верхней части DataGrid появится еще одна строка с указанием номера отображенного заказа (рис. 45).

 

Рис 45. Отображение в DataGrid информации из родительских таблиц Customers, Orders и дочерней таблицы Orders Details

Знак (+) в левой колонке исчез — это говорит о том, что у данной таблицы нет дочерних таблиц, и она в иерархии реляционных связей является последней.

Справа и слева верхней части DataGrid появились две кнопки, которые позволяют просмотреть колонки родительских таблиц, не поместившиеся на экран. В правом верхнем углу имеется стрелка, нажав на которую можно закрыть дочернюю таблицу и подняться на один уровень вверх (вернуть на экран содержимое родительской таблицы). Кроме того, данный DataGrid позволяет выполнить сортировку любой таблицы на любом уровне иерархии по любой колонке. Для этого достаточно щелкнуть мышью на заголовке колонки. После этого в заголовке колонки появится небольшая стрелка, указывающая порядок сортировки (по возрастанию или убыванию). При повторном щелчке на той же колонке порядок сортировки меняется на обратный.

Этот пример достаточно убедительно демонстрирует преимущество Visual Studio.NET. Нам удалось реализовать возможность отобразить в одном визуальном элементе три взаимосвязанные таблицы с возможностью их сортировки по любому признаку. При этом было написано всего 10 строк программного кода.




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 482; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.