Россия, г. Ейск |
Разработка бизнес-приложений Silverlight
Создание модели данных для приложения
Для того, чтобы управлять данными в приложении мы будем использовать модель сущности данных
Для того, чтобы создать модель сущности данных необходимо:
- В Solution Explorer, щелкните правой кнопкой мышки по проекту AdventureWorksOrders.Web, выберите пункт Add, а потом - New Item. Появится диалоговое окно Add New Item.
- В категории Data щелкните по шаблону ADO.NET Entity Data Model.
- Измените название на AdventureWorksEDM.edmx и щелкните по пункту Add. При этом откроется мастер Entity Data Model Wizard.
- На странице Choose Model Contents щелкните мышкой по пункту Generate from database и щелкните по пункту Next.
- На странице Choose Your Data Connection щелкните по пункту New Connection. При этом появится окно диалога Connection Properties.
- В качестве источника данных выберите пункт Select Microsoft SQL Server Database File, укажите расположение файла базы данных AdventureWorksLT.
- Нажмите OK.
- На странице Choose Your Data Connection щелкните Next.
- Если появится предложение скопировать файл базы данных в проект и изменить соединение, нажмите на пункт Yes.
- На странице Choose Your Database Objects разверните узел Tables.
- Поставьте галочки рядом с таблицами SalesOrderDetail (SalesLT) и SalesOrderHeader (SalesLT).
- Щелкните мышкой Finish. В дизайнере сущностей появятся таблицы SalesOrderDetail и SalesOrderHeader.
- Запустите проект
Вы должны запустить проект перед добавлением службы доменов.
Создание службы доменов
Служба доменов отображает сущности данных и операций в модели данных для клиента. В данном упражнении мы добавим службу доменов к серверному проекту.
Для того, чтобы создать службу доменов необходимо:
- В Solution Explorer щелкните правой кнопкой мышки по проекту AdventureWorksOrders.Web, щелкните Add, после чего щелкните по пункту New Item. Появится окно диалога Add New Item.
- В категории Web щелкните по шаблону Domain Service Class.
- Назовите класс службы доменов именем AdventureWorksService, после чего щелкните по пункту Add. Появится окно диалога Add New Domain Service Class.
- Поставьте галочку в пункте Enable editing, после чего поставьте галочки напротив сущностей SalesOrderDetail и SalesOrderHeader.
- Нажмите OK.
- Запустите решение
Редактирование запроса службы доменов с целью включения связанных данных
Служба доменов предоставляет основные операции, требующие модификации в конкретном приложении. В данном примере мы отредактируем запрос GetSalesOrderHeaders, так, чтобы он возвращал связанные записи SalesOrderDetail. Для запуска объекта DataPager также требуется задание порядка сортировки в запросе.
Для того, чтобы изменить запрос службы домена необходимо:
- В Solution Explorer дважды щелкните по файлу AdventureWorksService.cs.
- Обновите метод GetSalesOrderHeaders следующим кодом.
public IQueryable<SalesOrderHeader> GetSalesOrderHeaders() { return this.ObjectContext.SalesOrderHeaders.Include("SalesOrderDetails").OrderBy(e => e.SalesOrderID); }
- в Solution Explorer дважды щелкните по файлу AdventureWorksService.metadata.cs.
- В классе SalesOrderHeaderMetadata добавьте атрибут Include обязательно перед выражением коллекции сущностей SalesOrderDetails:
[Include] public EntityCollection<SalesOrderDetail> SalesOrderDetails { get; set; }
- Запустите решение.
Создание страницы Silverlight для отображения данных
В этом упражнении мы добавим страницу Orders для отображения данных из таблиц.
Создание страницы Silverlight
- В Solution Explorer, в AdventureWorksOrders, щелкните правой кнопкой по папке Views и добавьте новый элемент.
- В диалоговом окне Add New Item щелкните по категории Silverlight, затем щелкните по шаблону Silverlight Page.
- Назовите Orders.xaml, щелкните по пункту Add.
Добавление кнопки навигации к домашней стричке
В этом упражнении мы добавим кнопку к домашней страничке приложения для перехода на страничку Orders.
Создание кнопки навигации
- В Solution Explorer дважды щелкните по MainPage.xaml.
- В окне XAML добавьте следующий код после строки
<HyperlinkButton x:Name="Link2" ... />. <Rectangle x:Name="Divider3" Style="{StaticResource DividerStyle}"/> <HyperlinkButton x:Name="Link3" Content="Orders" Style="{StaticResource LinkStyle}" NavigateUri="/Orders" TargetName="ContentFrame"/>
- Запустите приложение. В панели навигации должна появиться кнопка Orders.
- Щелкните по кнопке Order. Появится пустая страничка Orders.
Отображение связанных данных на странице
В этом упражнении мы создадим элемент управления связывания данных на странице Orders за счет перетаскивания элементов из окна Data Sources прямо в конструктор. Вначале мы создадим DataGrid, отображающий основную информацию об отдельном заказе, такую как Account Number, CustomerID, и Amount Due. Затем мы создадим элемент управления Grid, который перечисляет индивидуальные элементы заказа.
Создание элемента управления связывания данных
- В Solution Explorer дважды щелкните по Orders.xaml.
- Выберите меню Data и щелкните Show Data Sources. Откроется окно Data Sources. Учтите, что окно Data Sources уже содержитсущности, доступные для приложения.
- Щелкните по узлу SalesOrderHeader и щелкните по ниспадающему меню.
- Щелкните Details.
- Из окна Data Sources перетащите узел SalesOrderHeader в конструктор. При этом будет создан Grid, наполненный данными из таблицы SalesOrderHeader.
- In the Data Sources window, expand the SalesOrderHeader node.
- Click the SalesOrderDetails node (the child node of the SalesOrderHeader node).
- Перетащите узел SalesOrderDetails в конструктор. Появится DataGrid, содержащий данные из таблицы SalesOrderDetail.
Добавление разбивки на страницы для навигации по данным заказа
В данном упражнении мы добавим разбивку на страницы за счет добавления элемента управления DataPager к источнику данных. Мы установим DataPager.Source в положение DomainDataSource для управления данными на странице.
Нужно при этом учитывать, что DataPager требует, чтобы его данные были явно отсортированы. Именно поэтому выражение OrderBy было добавлено в запрос в самом начале упражнения.
Конфигурирование разбивки данных на страницы
- В Solution Explorer дважды щелкните по Orders.xaml.
- Найдите элемент управления DataPager в панели инструментов.
- Перетащите DataPager в конструктор.
- В окне Data Sources щелкните по узлу SalesOrderHeader.
- Перетащите узел SalesOrderHeader на DataPager. Это свяжет свойство Source элемента управления DataPager с корректным источником данных.
- Выберите DataPager в конструкторе.
- В окне Properties установите свойство PageSize равным 1.
Тестирование приложения
В этом упражнении мы построим и запустим приложение для того, чтобы убедиться, что программа работает нормально.
Тестирование приложения
- В меню Build щелкните по Build Solution. Убедитесь, что приложение работает без ошибок.
- Запустите приложение.
- Нажмите на кнопку Orders.
- Щелкните по кнопкам навигации на элементе управления DataPager для навигации по записям.
Учтите, что связь между главной и подчиненной таблицами появится в DataGrid при навигации по записям заголовка заказов.