Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задание 4. Произвести привязку данных к элементам контроля – 2 часа.






Для взаимодействия приложения с базой данных необходимо в коде класса страницы объявить статическое свойство контекста данных сформированной EDM-модели. Это свойство целесообразно объявлять статическим.

Например:

public static TitlePresonalEntities DataEntitiesEmployee { get; set; }

Также необходимо объявить обобщенную коллекцию типа ObservableCollection< Employee> для работы приложения с коллекцией объектов базы данных. Этот тип представляет коллекцию динамических данных, обеспечивающих выдачу уведомления при получении и удалении элементов или при обновлении всего списка. Тип ObservableCollection< Т> находится в пространстве имен System.Collections.ObjectModel, ссылку на которое нужно добавить в объявлении класса приложения.

using System.Collections.ObjectModel;

Экземпляры свойств контекста данных и коллекции необходимо создать в конструкторе класса страницы.

Например:

public PageEmployee(){ InitializeComponent(); DataEntitiesEmployee = new TitlePresonalEntities(); ListEmployee = new ObservableCollection< Employee> (); }

Формирование данных для приложения, которые должны предоставляться из базы данных, буде проводиться при загрузке страницы приложения. Для этого в XAML-документ Page добавьте свойство Loaded.

Loaded=" Page_Loaded"

В код класса страницы приложения включаем обработчик Page_Loaded.

private void Page_Loaded(object sender, RoutedEventArgs e){ ObjectQuery< Employee> employees = DataEntitiesEmployee.Employees; var queryEmployee = from employee in employees orderby employee.Surname select employee; foreach (Employee emp in queryEmployee) { ListEmployee.Add(emp); } DataGridEmployee.ItemsSource = ListEmployee; }

Поле employees имеет тип ObjectQuery< Employee>. Класс ObjectQuery< Т> представляет запрос, возвращающий коллекцию типизированных сущностей с любым количеством элементов. Запрос сформируем с помощью технологии LINQ.

var queryEmployee = from employee in employees orderby employee.Surname select employee;

Результаты запроса целесообразно отсортировать, например по фамилии сотрудника (orderby employee.Surname). Далее формируем коллекцию объектов базы данных и источник данных для сетки DataGrid.

foreach (Employee emp in queryEmployee) { ListEmployee.Add(emp); }DataGridEmployee.ItemsSource = ListEmployee;

В результате проектирования в приложении сформирована коллекция с данными из таблицы базы данных.

Необходимо настроить сетку DataGrid для корректного отображения данных.

Модифицируйте общее описание DataGrid.

1. Определите привязку для источника данных.

ItemsSource=" {Binding}"

2. Отмените автоматическую генерацию столбцов.

AutoGenerateColumns=" False"

3. Установите привязку к левому краю страницы.

HorizontalAlignment=" Left"

4. Определите максимальные размеры сетки.

MaxWidth=" 1000" MaxHeight=" 295"

5. Установите основной и альтернативный цвета заливки сетки.

6. RowBackground=" #FFE6D3EF" AlternatingRowBackground=" #FC96CFD4"

7. Определите цвет заливки и толщину линии для рамки сетки.

8. BorderBrush=" #FF1F33EB" BorderThickness=" 3"

9. Определите высоту строк сетки.

RowHeight=" 25"

10. Переопределите форму курсора при наведении указателя мыши на таблицу DataGridEmployee.

Модифицированное XAML-описание сетки DataGrid:

Cursor=" Hand" < DataGrid Name=" DataGridEmployee" ItemsSource=" {Binding}" AutoGenerateColumns=" False" HorizontalAlignment=" Left" MaxWidth=" 1000" MaxHeight=" 295" RowBackground=" #FFE6D3EF" AlternatingRowBackground=" #FC96CFD4" BorderBrush=" #FF1F33EB" BorderThickness=" 3" IsReadOnly=" True" RowHeight=" 25" Cursor=" Hand" >





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.