Управление данными ЛАБОРАТОРНАЯ РАБОТА № 3 1. ЦЕЛЬ РАБОТЫ

advertisement
ЛАБОРАТОРНАЯ РАБОТА № 3
Управление данными
1. ЦЕЛЬ РАБОТЫ
Целью работы является рассмотреть элементы управления источниками данных и
элементы управления для отображения данных. Задачей работы является создание Webформ с различными элементами управления.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, среда разработки
Microsoft Visual Studio, СУРБД Microsoft SQL Server.
3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Технология Web Forms
Технология Web Forms, реализованная в ASP.NET, реализует модель
программирования, в которой веб-страницы динамически генерируются на веб-сервере и
передаются браузеру через Интернет. В определенном смысле эта технология является
развитием технологии ASP, позволяя объединить Web-ориентированый подход написания
Web-приложений ASP с методами традиционного программирования.
При этом разработчик создает разметку HTML-страницы со статическим
содержимым и пишет программу С# для вывода динамического содержимого. Программа
С# выполняется на сервере, и созданные ею данные интегрируются со статической
HTML-разметкой , в результате чего получается веб-страница. Браузеру отсылается
полученный стандартный HTML-код.
Веб-формы (страницы приложений, созданные с помощью Web Forms) могут
работать с любым браузером, если он может работать с версией HTML, используемой
сервером при создании этих страниц. Логика работы веб-формы может быть реализована
на любом языке программирования, поддерживаемоговерсией .NET Framework, которая
установлена на веб-сервере.
Веб-приложения можно создавать в любом текстовом редакторе . , но все-таки
Visual Studio значительно облегчает процесс разработки и тестирования веб-приложений.
Любая веб-форма состоит, как правило, из трёх составляющих: директивной,
декларативной и императивной (программной).
Директивная составляющая необходима для сообщения исполняющей среде
ASP.NET настроек для обработки текущей страницы.
Декларативная составляющая содержит статическую информацию о разметке
текущей страницы, а также о правилах привязки к динамическим данным.
Императивная составляющая реализует поведенческие аспекты задекларированных
элементов управления ASP.NET, а также позволяет создавать для их взаимодействия
объектные модели из любых классов, входящих в состав платформы .NET Framework или,
при надобности, любых других платформ любым возможным стандартным способом. Эта
составляющая может находиться как в файле разметки, так и в отдельном файле, имя
которого формируется с помощью конкатенации имени файла разметки страницы,
символа точки и сокращения языка программирования (для C# - расширение файла .cs)
Страница хранится в файле с расширением .аsрх. При обращении к веб-серверу по
виртуальному адресу формы в итоге производится обращение к классу вызываемой вебформы, динамически создающему ответный код HTML, посылаемый браузеру клиента.
ASP.NET предлагает богатый выбор элементов пользовательского интерфейса.
Количество и сложность элементов управления значительно возросли за последние годы,
соответственно возросли и ожидания пользователей относительно внешнего вида и
поведения веб-приложений. Кроме всего прочего, веб-приложения по своей природе
являются распределенными. В типичном случае клиент и сервер расположены в разных
местах. В большинстве веб-приложений при их создании приходится учитывать
такиехарактеристики, как время ожидания в сети, ширина полосы пропускания и
производительность веб-сервера и т.д. Передача информации от клиента к веб-серверу и
обратно может длиться несколько секунд.
Серверные элементы управления ASP.NET
Добавить некоторое содержимое в код ASP.NET в VisualStudio с помощью
конструктора Web Forms, который поддерживает перетаскивание элементов мышью из
панели элементов управления Web.
На страницы ASP.NET можно добавлять три типа серверных элементов
управления.

Серверные элементы управления HTML — имитируют стандартные
элементы HTML, которые должны быть знакомы разработчикам на HTML.

Серверные элементы управления Web — новый набор элементов, часть
которого имеют ту же функциональность, что и элементы HTML. Эти элементы
управления используют общую схему именования свойств и прочих элементов
для облегчения разработки и согласования с аналогичными элементами
ynpaвления WindowsForms. Как увидим позднее, доступны также некоторые
совершенно новые и очень мощные элементы управления. Среди Webсерверных элементов управления есть стандартные — такие как кнопки,
элементы проверки допустимости для контроля пользовательского ввода,
элементы peгистрации (Login), упрощающие управление пользователями, а
также более сложные элементы, предназначенные для работы с источниками
данных и т.д.

Настраиваемые и пользовательские элементы управления — эти элементы
определяются разработчиком и могут быть созданы разными способами.
Web-серверные элементы управления ASP.NETПочти все Web-серверные
элементы управления (в этой и других категориях) унаследованы от класса
System.Web.UI. WebControls .WebControl, который, в свою очередь, унаследован от
System.Web.UI .Control. Те же из них, которые не используют это наследование,
наследуются либо напрямую от Control, либо от более специализированных базовых
классов, которые в конечном итоге происходят от Control. Этим объясняется, что Webсерверные элементы управления имеют множество общих свойств и событий, которые
можно использовать при необходимости.
Многие из часто используемых унаследованных свойств имеют отношение к стилю
отображения. Внешним видом элементов управления можно легко управлять, используя
такие свойства, как ForeColor, BackColor, Font и так далее; управлять ими можно также с
помощью классов каскадных таблиц стилей (CSS). Это достигается установкой
строкового свойства CssClass значением имени класса CSS из соответствующего файла.
Другие достойные упоминания свойства — это Width и Height, с помощью которых
можно управлять размером элемента управления, AccиssKey и TabIndex — для
облегчения взаимодействия с пользователем, а также Enabled — для
включения/отключения функциональности элемента управления в составе разрешённых
для реагирования серверных элементов управления Web Forms.
Некоторые элементы управления могут содержать в себе другие элементы управления, таким образом, образуя иерархию в пределах одной страницы. Получить доступ к
вложенным элементам управления можно через свойство Controls, а к контейнерному
элементу управления — через свойство Parent.
Вероятно, вам придется использовать унаследованное событие Load чаще другихдля инициализации элемента управления, и PreRender — для выполнения самых последних модификаций перед выводом HTML.
Web-серверные элементы управления для работы с данными
Эти элементы управления подразделяются на два типа:
1. Элементы управления источниками данных (SqlDataSource, AccessDataSource,
ObjectDataSource, XmlDataSource, SiteMapDataSource);
2. Элементы управления отображением данных (GridView, DataList, DetailsView,
FormView, Repeater, Reportviewer).
Обычно на страницу помещается один из (не визуальных) элементов управления
источников данных для связи с хранилищем данных; затем добавляются элементы
управления для отображения данных, привязанные к источнику. Некоторые из наиболее
усовершенствованных элементов управления для отображения данных вроде GridView
также позволяют редактировать данные.
Элементы управления источников данных
Элемент
управления
SqlDataSource
Описание
Служит источником данных, хранимых в базе SQL Server. Поместив
этот элемент на страницу, можно манипулировать данными SQL
Serval с помощью элементов управления, отображающих данные.
Далее в этой главе мы покажем его в действии.
AccessDataSource
Как SqlDataSource, но работает с данными из базы Access.
ObjectDataSource
Этот элемент управления позволяет манипулировать данными,
сохраненными в созданных вами объектах, которые могут быть
сгруппированы в класс коллекции. Это может быть очень быстрый
способ представить пользовательскую объектную модель на
странице ASP.NET.
Аналогично SqlDataSource , но работает с иерархическими
данными. Удобно применять в связке с элементом управления
TreeView(один из элементов управления,
предназначенныйвизуализации иерархических данных). Можно
также при необходимости трансформировать данные XML с
помощью таблицы стилей XSL.
SiteMapDataSource Позволяет связаться с иерархическими данными карты сайта. См.
далее раздел, посвященный Web-серверным элементам управления
для навигации
XmlDataSource
Элементы управления для отображения данных
Элемент управления
Описание
GridView
Отображает множественные элементы данных (такие как записи
базы данных) в форме строк, где каждая строка состоит из
столбцов, отображающих поля данных. Манипулируя свойствами
этого элемента управления, можно выбирать, сортировать и
редактировать элементы данных.
DataList
Отображает множественные элементы данных, где для каждого
элемента можно применять произвольный шаблон отображения.
Как и в случае GridView, можно выбирать, сортировать и
редактировать элементы данных.
DetailsView
Отображает единственный элемент данных (запись базы данных) в
табличной форме, где каждая строка данных представляет
отдельное поле. Позволяет добавлять, редактировать и удалять
элементы данных.
FormView
Отображает единственный элемент данных, используя шаблон. Как
и DetailsView, позволяет добавлять, редактировать и удалять
элементы данных.
Repeater
Подобно DataList, но без возможностей выбора и редактирования.
ReportViewer
Усовершенствованный элемент управления, предназначенный для
отображения отчетных данных.
Общие сведения о серверном веб-элементе управления GridView
В разработке программного обеспечения зачастую встает задача отображения
табличных данных. ASP.NET предоставляет ряд инструментов для отображения данных в
табличном виде, в число которых входит элемент управления GridView. С помощью
элемента управления GridView можно отображать, изменять и удалять данные из
различных источников данных, в том числе баз данных, XML-файлов и бизнес-объектов,
публикующих данные.
Базовые сведения
Элемент управления GridView можно использовать для выполнения следующих задач:


Автоматическая привязка и отображение данных из элемента управления источника
данных.
Выборка, сортировка, пролистывание, изменение и удаление данных из элемента
управления источника данных.
Помимо этого, внешний вид и поведение элемента управления GridView можно изменять
следующими способами:

Определять настраиваемые столбцы и стили.

Использовать шаблоны для создания настраиваемых элементов интерфейса
пользователя (UI).

Вводить пользовательский код в функциональность элемента управления
GridView с помощью обработчиков событий.
Привязка данных к элементу управления GridView
Элемент управления GridView допускает два способа привязки к данным:

Привязка данных с использованием свойства DataSourceID, позволяющего
привязать элемент управления GridView к элементу управления источника
данных. Этот подход является предпочтительным, поскольку он позволяет
элементу управления GridView использовать возможности элемента управления
источника данных и предоставить встроенную функциональность для
сортировки, разбиения по страницам и обновления данных.

Привязка данных с использованием свойства DataSource, позволяющего
выполнять привязку к различным объектам, включая наборы данных и модули
чтения данных ADO.NET. При использовании этого подхода код реализации
дополнительной функциональности наподобие сортировки, разбиения по
страницам и обновления данных требуется писать самостоятельно.
При выполнении привязки к источнику данных с использованием свойства
DataSourceID элемент управления GridView поддерживает двустороннюю привязку
данных. Помимо того, что элемент управления будет отображать возвращенные данные,
можно включить в элементе управления автоматическую поддержку операций обновления
и удаления привязанных данных.
Форматирование отображаемых данных в элементе управления
GridView
Для строк элемента управления GridView можно задать структуру, цвет, шрифт и
выравнивание. Также можно задать отображение текста и данных, содержащихся в
строках. Помимо этого, можно указать порядок отображения строк данных: в виде
обычных элементов, чередующихся элементов, выбранных элементов или элементов в
режиме редактирования. Элемент управления GridView также позволяет задавать формат
столбцов.
Изменение и удаление данных с помощью элемента управления
GridView
По умолчанию элемент управления GridView отображает данные в режиме «только
для чтения». Тем не менее, элемент управления также поддерживает режим
редактирования, в котором строка отображается с помощью таких элементов управления,
допускающих редактирование, как TextBox или CheckBox. Элемент управления GridView
также можно настроить на отображение кнопки Delete, которая позволяет удалить
соответствующую запись из источника данных.
Элемент управления GridView способен автоматически выполнять операции
изменения и удаления данных над источником данных, к которому он привязан, что
позволяет обеспечить возможность редактирования без необходимости написания
дополнительного кода. Наряду с этим процесс изменения и удаления данных можно
контролировать программным способом, например, при привязке элемента управления
GridView к элементу управления источника данных, доступному только для чтения.
Элементы управления ввода данных, используемые при отображении строки в режиме
редактирования, можно настроить с помощью шаблона.
Функциональность сортировки в элементе управления GridView
Элемент управления GridView поддерживает сортировку по одиночному столбцу без
создания дополнительного кода. Функциональность сортировки элемента управления
GridView можно расширить, используя событие сортировки и задавая выражение
сортировки.
Функциональность разбиения по страницам в элементе управления
GridView
Элемент управления GridView обладает базовой функциональностью разбиения по
страницам. Функциональность разбиения по страницам элемента управления GridView
можно расширить с помощью свойства PagerTemplate элемента управления GridView.
События GridView
Функциональность элемента управления GridView можно расширять с помощью
обработчиков событий. Элемент управления GridView предоставляет события,
происходящие перед операциями перехода и изменения и после них.
Общие сведения о серверном веб-элементе управления TreeView
Серверный веб-элемент управления TreeView используется для отображения
иерархических данных, таких как оглавление или каталог файлов, в древовидной
структуре.
Функциональные возможности
Элемент управления TreeView поддерживает следующие функциональные
возможности:

Автоматическая привязка данных, благодаря которой узлы элемента
управления привязываются к иерархическим данным, таким как XML-документ.

Поддержка структуры переходов по веб-узлу благодаря интеграции с
элементом управления SiteMapDataSource.

Текст узла, который может отображаться или как обычный текст, или как
гиперссылки.

Настройка внешнего вида с помощью тем, определенных пользователем
изображений и стилей.

Программный доступ к объектной модели TreeView, которая позволяет
создавать древовидные структуры, заполнять узлы, устанавливать свойства и
пр., динамическим образом.

Заполнение клиентских узлов (на поддерживаемых обозревателях).

Возможность отображения флажков рядом с каждым узлом.
Элемент управления TreeView может отображать различные типы данных:
статические данные, заданные декларативно в элементе управления, данные, привязанные
к элементу управления, или данные, добавленные к элементу управления TreeView
программным путем в результате действий пользователя.
Отображение статических данных
Статические данные в элементе управления TreeView можно отображать путем
создания коллекции элементов TreeNode, которые являются дочерними элементами
элемента управления TreeView. Эти дочерние элементы называются также дочерними
узлами.
В следующем примере показана разметка элемента управления TreeView с тремя
узлами, некоторые из которых имеют дочерние узлы.
<asp:TreeView ID="MyTreeView" Runat="server">
<Nodes>
<asp:TreeNode Value="Child1" Expanded="True" Text="1">
<asp:TreeNode Value="Grandchild1" Text="A" />
<asp:TreeNode Value="Grandchild2" Text="B" />
</asp:TreeNode>
<asp:TreeNode Value="Child2" Text="2" />
<asp:TreeNode Value="Child3" Expanded="True" Text="3">
<asp:TreeNode Value="Grandchild1" Text="A" />
</asp:TreeNode>
</Nodes>
</asp:TreeView>
Привязка данных к элементу управления TreeView
Элемент управления TreeView можно привязать к источнику данных, который
реализует интерфейс IHierarchicalDataSource, например, элементы управления
XmlDataSource и SiteMapDataSource. Кроме того, при привязке данных можно управлять
тем, какие поля следует заполнять из источника данных.
Отображение данных программным путем при помощи
TreeNodeCollection
Элемент управления TreeView можно заполнить данными программным путем,
обратившись к свойству Nodes, которое возвращает класс TreeNodeCollection. Коллекция
TreeNodeCollection является очень строго типизированной коллекцией объектов TreeNode.
Так как объект TreeNode содержит свойство ChildNodes, которое может содержать
объекты TreeNode, то класс TreeNodeCollection является иерархической структурой
данных, представляющей все узлы элемента управления TreeView.
Типы узлов TreeView
Элемент управления TreeView состоит из одного или нескольких узлов. Узлом
называется каждая запись в дереве, представленная объектом TreeNode. В следующей
таблице описаны три разных типа узлов.
Тип узла
Корневой
Описание
Узел без родительского узла и с одним или несколькими дочерними
узлами.
Родительский Узел с родительским узлом и с одним или несколькими дочерними узлами.
Конечный
Узел без дочерних узлов.
Несмотря на то, что одно дерево имеет, как правило, только один корневой узел,
элемент управления TreeView позволяет добавление нескольких элементов управления в
структуру дерева. Подобные возможности полезны, когда есть необходимость в
отображении списка без единого корневого узла, как, например, в списке категорий
продуктов.
Каждый узел содержит свойства Text и Value. Значение свойства Text отображается
в элементе управления TreeView, а свойство Value используется для хранения
дополнительных данных об узле, например, данных, передаваемых событию обратной
передачи, связанному с узлом.
При клике на узле элемента управления TreeView он может либо инициировать
событие выбора (через обратную отправку), либо перенаправить браузер на другую
страницу. Если свойство NavigateUrl не задано, то при клике на узле инициируется
событие SelectedNodeChanged, которое можно обработать для реализации необходимой
функциональности. Каждый узел имеет свойство SelectAction, которое можно
использовать для определения отдельных действий, происходящих при клике на узле,
например, разворачивание или сворачивание узла. Чтобы при клике на узле вместо
инициирования события выбора происходило перенаправление на определённую
страницу, присвойте свойству NavigateUrl узла значение, отличное от пустой строки.
Заполнение данных TreeNode по требованию
Иногда не очень удобно определять структуру данных статически, так как данные
могут зависеть от информации, получаемой во время выполнения. Для динамического
отображения данных элемент управления TreeView поддерживает динамическое
заполнение узла. Если элемент управления TreeView настроен на заполнение по
требованию, то элемент управления инициирует событие, когда пользователь
разворачивает узел. Обработчик событий извлекает соответствующие данные и заполняет
узел, на который кликнул пользователь. Чтобы заполнить объект TreeNode данными по
требованию, присвойте свойству PopulateOnDemand узла значение true и создайте
обработчик событий TreeNodePopulate для заполнения данными объекта TreeNode.
Заполнение узла в TreeView на стороне клиента
Любой обозреватель, имеющий свойство SupportsCallback с установленным
значением true в файле конфигурации возможностей обозревателя, поддерживает
заполнение узла на стороне клиента.
Заполнение узла на стороне клиента позволяет элементу управления TreeView
заполнить узел с помощью вызова события TreeNodePopulate сервера из клиентского
сценария, вместо запрашивания обмена данными с сервером.
Разрешение сценариев клиента
По умолчанию в современных обозревателях разворачивание и сворачивание узлов в
элементе управления TreeView производятся на основе вызова клиентских сценариев.
Использование клиентских сценариев уменьшает инерциальность взаимодействия, так как
элементу управления не надо обмениваться данными с сервером для отображения новой
информации.
Обратная передача в TreeView
По умолчанию элемент управления TreeView управляет функциями разворачивания
и сворачивания на стороне клиента за исключением тех случаев, когда обозреватель не
поддерживает клиентские сценарии или свойство EnableClientScript имеет значение false.
Если свойство PopulateNodesFromClient имеет значение true и обозреватель поддерживает
клиентские сценарии, то элемент управления TreeView извлекает данные с сервера, но не
передает обратно всю страницу целиком.
Если элемент управления TreeView поставлен в режим выбора, то каждый раз при
клике на узле пользователем происходит обратная передача на сервер и инициируется
событие SelectedNodeChanged.
Обычно управлять обратной передачей событий стоит, когда элемент управления
TreeView находится в режиме выбора или узлы заполняются динамически. Это
действительно, пока либо свойство PopulateOnDemand, либо свойство
PopulateNodesFromClient имеют значение true.
Использование элемента управления TreeView с элементами управления
UpdatePanel
Элементы управления UpdatePanel используются для обновления выбранных
областей страницы вместо обновления всей страницы с помощью обратной передачи.
Элемент управления TreeView можно использовать внутри элемента управления
UpdatePanel со следующими ограничениями:
 Обратные вызовы элемента управления TreeView должны быть связаны с
асинхронными обратными передачами, иначе проверка события обратного вызова
завершится неудачей. При присваивании свойству PopulateOnDemand элемента
управления TreeNode значения true обратные вызовы разрешены. Чтобы
удостовериться, что обратные вызовы элемента управления TreeView работают с
элементом управления UpdatePanel, можно использовать один из следующих
подходов:
o Если элемент управления TreeView не внутри элемента управления
UpdatePanel, то следует отключить обратные вызовы элементов управления
TreeNode, которые не являются частью асинхронной обратной передачи.
Для этого надо присвоить свойству PopulateOnDemand значение false.
o Обновите программным путем все элементы управления, которые
регистрируют обратные вызовы во время асинхронной обратной передачи.
Например, можно поместить элемент управления TreeView внутри элемента
управления UpdatePanel. Элемент управления TreeView не обязательно
должен быть внутри элемента управления UpdatePanel, из которого
происходят асинхронные обратные передачи, так как элемент управления
UpdatePanel, содержащий элемент управления TreeView, обновляется.
 Применять стили следует путем ссылки на класс таблиц каскадных стилей
(Cascading Style Sheet – CSS). Например, вместо того, чтобы установить атрибут
свойства NodeStyle в форме «свойство.подчиненное_свойство», задавайте стиль с
помощью атрибута в форме «CssClass=имя_класса». Аналогично, при
использовании шаблона NodeStyle для задания стиля, используйте атрибут CssClass
шаблона.
 Свойство EnableClientScript должно иметь значение true (значение по умолчанию).
Кроме того, если обратные вызовы включены для элемента управления TreeView,
то нельзя менять свойство EnableClientScript между асинхронными обратными
передачами.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Упражнение 1
Создание Web форм с элементом управления TreeView DataСвязывание данных с представлением
В этом упражнении вы будете использовать элементы управления SqlDataSource и
TreeView для связывания и вывода иерархического набора данных.
План:
Пользователь интрасети на портале компании должен увидеть специализированные для
неё решения.
Группа Web-разработчиков определила следующий дизайн:
 Приложение требует, чтобы элемент управления TreeView был помещен внутри
секции с полосой прокрутки, которая появляется тогда, когда содержимое
TreeView выходит из области видимости.
 Секция с полосой прокрутки должна иметь высоту всей странички и ширину 180
пикселей.
Откройте начальный Web-сайт
1. В среде Visual Studio, в меню File нажмите Open Web Site.
2. Выберите ~\LabFiles\Starter\language\Ex1 , и нажмите Open.
Создайте соединение с базой данных.
3. В окне Solution Explorer двойным щелчкем выберите файл web.config. Файл
web.config откроется в окне Source.
4. В секции <configuration> создайте подсекцию <connectionStrings> и определите
соединение для базы данных Northwind Traders под названием NWindConn.
Ваш код должен выглядеть следующим образом:
<connectionStrings>
<add name="NWindConn"
connectionString="SERVER=(local);DATABASE=northwind;trusted_connection=true;"/>
</connectionStrings>
3.Чтобы сохранить файл web.config , в меню File выберите Save web.config
4. Чтобы закрыть web.config, в меню File выберите Close
Создание элемента управления SqlDataSource
В окне Solution Explorer сделайте двойной щелчок на страничке Sales.aspx.
Sales.aspx откроется в исходном окне.
2. Импортируйте библиотеку классов (пространство имен) System.Data используя
директиву @Imports
Ваш код должен иметь вид:
<%@ import namespace="System.Data" %>
3. Из окна Toolbox перетащите элемент управления SqlDataSource внутрь
содержимого элемента управления PageContentPlaceHolder .
4. Установите следующие свойства элемента управления SqlDataSource.
Атрибут
Значение
ID
ConnectionString
SelectCommand
Regions
<%$ ConnectionStrings:NWindConn%>
SELECT RegionID, RegionDescription FROM Region
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="Regions" runat="server" ConnectionString="<%$
ConnectionStrings:NWindConn %>" SelectCommand="SELECT RegionID, RegionDescription
FROM Region">
</asp:SqlDataSource>
5. Из секции данных окна Toolbox перетащите элемент управления SqlDataSource в
область содержимого элемента управления PageContentPlaceHolder.
6. Установите следующие свойства SqlDataSource
Атрибут
Значение
ID
ConnectionString
SelectCommand
Territories
<%$ ConnectionStrings:NWindConn %>
SELECT TerritoryID, TerritoryDescription, RegionID FROM
Territories
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="Territories" runat="server" ConnectionString="<%$
ConnectionStrings:NWindConn %>" SelectCommand="SELECT TerritoryID,
TerritoryDescription, RegionID FROM Territories">
</asp:SqlDataSource>
Создание элемента управления XmlDataSource.
1. Из секции данных окна Toolbox перетащите элемент управления XmlDataSource
в область содержимого элемента управления PageContentPlaceHolder.
2. Установите значение ID равное XmlView
Ваш код должен выглядеть следующим образом:
<asp:XmlDataSource ID="XmlView" runat="server">
</asp:XmlDataSource>
Заполнение XmlDataSource данными:
1. В императивной части страницы создайте обработчик события PageLoad.
Ваш код должен выглядеть следующим образом:
void Page_Load (object sender, EventArgs e)
{
}
2. В обработчике события загрузки страницы создайте объект DataSet с именем
treeData и установите параметр DataSetName.
Ваш код должен выглядеть следующим образом:
DataSet treeData = new DataSet();
treeData.DataSetName = "RegTerrs";
3. Создайте объект DataView с названием regionView который использует команду
Select объекта SqlDataSource. Он передает пустой параметр
DataSourceSelectArguments, который передает результат в DataView.
Ваш код должен выглядеть следующим образом:
DataView regionView = (DataView)
Regions.Select(DataSourceSelectArguments.Empty);
4. Создайте объект DataTable с именем regionTable, который использует метод Copy
свойства Table элемента управления regionView, и установите свойство
ColumnMapping для первых двух колонок в MappingType.Attribute
Ваш код должен выглядеть следующим образом:
DataTable regionTable = regionView.Table.Copy();
regionTable.Columns[0].ColumnMapping =
MappingType.Attribute;
regionTable.Columns[1].ColumnMapping =
MappingType.Attribute;
5. Создайте объект DataView с именем territoryView, который использует команду
Select для выборки области из SqlDataSource, передавая пустой параметр
DataSourceSelectArguments, который передает результат в DataView
Ваш код должен выглядеть следующим образом:
DataView territoryView = (DataView)
Territories.Select(DataSourceSelectArguments.Empty);
6. Создайте объект DataTable с именем territoryTable, который использует метод
Copy свойства Table элемента управления territoryView, и установите свойство
ColumnMapping первых трех колонок в MappingType.Attribute.
Ваш код должен выглядеть следующим образом:
DataTable territoryTable = territoryView.Table.Copy();
territoryTable.Columns[0].ColumnMapping =
MappingType.Attribute;
territoryTable.Columns[1].ColumnMapping =
MappingType.Attribute;
territoryTable.Columns[2].ColumnMapping =
MappingType.Attribute;
7. Установите свойство TableName для объекта DataTable с именем regionTable равным
Regions.
Ваш код должен выглядеть следующим образом:
regionTable.TableName = "Regions";
8. Установите свойство TableName для обьекта territoryTable равным Territories.
Ваш код должен выглядеть следующим образом:
territoryTable.TableName = "Territories";
9. Добавьте таблицы данных regionTable и territoryTable в treeData DataSet
Ваш код должен выглядеть следующим образом:
treeData.Tables.Add(regionTable);
treeData.Tables.Add(territoryTable);
10. Создайте связи DataRelation с именем rel которые модулируют иерархические
связи между регионами и областями, и установите свойство Nested объекта
DataRelation на true.
Ваш код должен выглядеть следующим образом:
DataRelation rel =
new DataRelation("regionsTerritories",
regionTable.Columns["RegionID"],
territoryTable.Columns["RegionID"]);
rel.Nested = true;
11. Добавьте отношение rel в объект treeData
Ваш код должен выглядеть следующим образом:
treeData.Relations.Add(rel);
12. Установите свойство Data объекта XmlView равным значению, возвращаемому из
метода GetXml объекта treeData типа.DataSet.
Ваш код должен выглядеть следующим образом:
XmlView.Data = treeData.GetXml();
Создайте элемент управления Panel содержащий TreeView.
1. Из стандартной части ToolBox перетащите элемент управления Panel в
PageContentPlaceHolder.
2. Нужно установить следующие свойства элемента управления Panel и очистить
значения свойства Height и Width.
Атрибут
Значение
ID
ScrollBars
BackColor
CssClass
pnlTreeView
Auto
Gainsboro
TreePanel
Ваш код должен выглядеть следующим образом:
<asp:Panel ID="pnlTreeView" runat="server" ScrollBars="Auto" BackColor="Gainsboro"
CssClass="TreePanel"></asp:Panel>
Создайте элемент управления TreeView
1. Из навигационной части (Navigation) окна Toolbox перетащите элемент управления
TreeView внутрь содержимого элемента управления Panel с идентификатором
pnlTreeView.
2. Установите следующие свойства для TreeView.
Атрибут
Значение
ID
DataSourceID
AutoGenerateDataBindings
ExpandDepth
ShowLines
Font-Size
RegTerrTree
XmlView
true
1
true
8pt
Ваш код должен выглядеть следующим образом:
<asp:TreeView ID="RegTerrTree" runat="server" DataSourceId="XmlView"
AutoGenerateDataBindings="true" ExpandDepth="1" ShowLines="true" FontSize="8pt"></asp:treeview>
3. Добавьте элемент DataBindings в RegTerrTree элемента управления TreeView .
Ваш код должен выглядеть следующим образом:
<DataBindings></DataBindings>
4. Добавьте элемент TreeNodeBinding в элемент DataBindings для корневого узла
дерева.
Ваш код должен выглядеть следующим образом:
<asp:TreeNodeBinding />
5. Установите следующие свойства элемента TreeNodeBinding.
Атрибут
Значение
Depth
0
DataMember
RegTerrs
Text
Regions & Territories
SelectAction
None
Ваш код должен выглядеть следующим образом:
<asp:TreeNodeBinding Depth="0" DataMember="RegTerrs"
Text="Regions & Territories" SelectAction="None"/>
6. Добавьте элемент TreeNodeBinding в элемент DataBindings для вывода текста и
значений региональных областей.
7. Установите следующие свойства элемента TreeNodeBinding.
Атрибут
Значение
Depth
DataMember
TextField
ValueField
1
Regions
RegionDescription
RegionID
Ваш код должен выглядеть следующим образом:
<asp:TreeNodeBinding Depth="1" DataMember="Regions" TextField="RegionDescription"
ValueField="RegionID"/>
8. Добавьте элемент TreeNodeBinding в элемент DataBindings для вывода текста и
значений территориальных узлов.
9. Установите следующие свойства элемента TreeNodeBinding.
Атрибут
Значение
Depth
2
DataMember
Territories
TextField
TerritoryDescription
ValueField
TerritoryID
Ваш код должен выглядеть следующим образом:
<asp:TreeNodeBinding Depth="2" DataMember="Territories"
TextField="TerritoryDescription" ValueField="TerritoryID" />
Просмотр страницы
1. Для сохранить страницы Sales.aspx, в меню File выберите Save Sales.apsx.
2. В любом месте странички кликните правой кнопкой мышки и выберите меню View
in Browser.
3. Просмотрите результаты развертывая узлы элемента управления TreeView
4. Закройте браузер.
5. В меню File выберите Close Project и оставьте среду Visual Studio открытой для
выполнения следуещего упражнения.
Упражнение 2
Создание Web-форм с привязанным к данным элементом
управления GridView
В этом упражнении перед вами стоит задача создать Web-форму для управления данными
с детальной информации о работниках.
Сценарий
Команда Web разработчиков должна создать Web форму для отображения работников по
регионам и территориям, учитывая, что пользователи имеют возможность изменять
данные в своем профиле.
Спроектируйте Web форму так, чтобы:

После того, как пользователь выбирает регион и территорию в узле дерева, элемент
управления GridView выводит на экран всех работников этой территории.

Для каждого работника из списка GridView должен содержать фамилию, имя и
звание.
Откройте исходный Web сайт.
1. В среде Visual Studio, в меню File, нажмите Open Web Site.
2. Выберите E:\LabFiles\Starter\language\Ex2, и нажмите Open.
Модифицируйте страницу Sales.aspx.
1. В Solution Explorer двойной щелчок на Sales.aspx.
Это откроет Sales.aspx в окне Source
2. Создайте таблицу под html комментарием <!-- TODO: Exercise 2 --> с cellspacing
равным 0 (выраженная в пикселях толщина линии, разделяющей смежные ячейки
таблицы), cellpadding равным 0 (пустое пространство между границей табличной
ячейки и помещённым в ней текстом), шириной width равной 100%, и высотой
heightравной 100%.
Таблица состоит из одной строки и двух ячеек.
3. Первая ячейка должна иметь ширину width равную 180 пикселам.
4. Для второй ячейки выравнивание текста align должно быть задано left и
вертикальное выравнивание valign установлено top.
Ваш код должен выглядеть следующим образом:
<table cellspacing=0 cellpadding=0 width="100%" height="100%">
<tr>
<td width="180px">
</td>
<td align="left" valign="top">
</td>
</tr>
</table>
5. Перетащите элемент управления pnlTreeView Panel и все его содержимое в первую
ячейку.
Создайте источник данных SqlDataSource для элемента управления GridView
1. Из раздела Data (данные) Toolbox перетащите элемент управления SqlDataSource
во вторую ячейку.
2. Установите следующие свойства для элемента управления SqlDataSource.
Атрибут
Значение
(ID)
EmployeesByRegion
ConnectionString
<%$ ConnectionStrings: NWindConn %>
SelectCommand
DataSourceMode
sp_GetEmployeesByRegion
DataReader
SelectCommandType
StoredProcedure
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="EmployeesByRegion" runat="server" ConnectionString="<%$
ConnectionStrings:NWindConn %>" SelectCommand="sp_GetEmployeesByRegion"
DataSourceMode="DataReader"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
3. Добавьте элемент SelectParameters в элемент управления SqlDataSource.
4. Добавьте элемент управления ControlParameter в элемент SelectParameters.
5. Установите следующие свойства элемента управления ControlParameter.
Атрибут
Значение
(Name)
ConvertEmptyStringToNulll
PropertyName
ControlID
RegionID
False
SelectedValue
RegTerrTree
Ваш код должен выглядеть следующим образом:
<SelectParameters><asp:ControlParameter Name="RegionID"
ConvertEmptyStringToNull="False" PropertyName="SelectedValue"
ControlID="RegTerrTree">
</asp:ControlParameter></SelectParameters>
6. Из раздела Data Toolbox перетащите элемент управления SqlDataSource во
вторую ячейку.
7. Установите следующие свойства для элемента управления SqlDataSource.
Атрибут
Значение
(ID)
ConnectionString
SelectCommand
DataSourceMode
EmployeesByTerritory
<%$ ConnectionStrings: NWindConn %>
sp_GetEmployeesByTerritory
DataReader
SelectCommandType
StoredProcedure
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="EmployeesByTerritory" runat="server" ConnectionString="<%$
ConnectionStrings: NWindConn %>" SelectCommand="sp_GetEmployeesByTerritory"
DataSourceMode="DataReader"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
8. Добавьте элемент SelectParameters в элемент управления SqlDataSource.
9. Добавьте элемент управления ControlParameter в элемент SelectParameters.
10. Установите следующие свойства элемента управления ControlParameter.
Атрибут
Значение
(Name)
ConvertEmptyStringToNulll
PropertyName
TerritoryID
False
SelectedValue
ControlID
RegTerrTree
Ваш код должен выглядеть следующим образом:
<SelectParameters><asp:ControlParameter Name="TerritoryID"
ConvertEmptyStringToNull="False" PropertyName="SelectedValue"
ControlID="RegTerrTree">
</asp:ControlParameter></SelectParameters>
Создание элемента управления GridView
1. Из раздела Data Toolbox перетащите элемент управления GridView во вторую
ячейку таблицы.
2. Установите следующие свойства для элемента управления GridView
Атрибут
Значение
(ID)
DataSourceID
Width
AutoGenerateColumns
GridviewRegion
EmployeesByRegion
100%
False
Ваш код должен выглядеть следующим образом:
<asp:GridView ID="GridviewRegion" runat="server" DataSourceID="EmployeesByRegion"
Width="100%" AutoGenerateColumns="False">
</asp:GridView>
3. Добавьте элемент Columns в элемент управления GridView.
<Columns>
</Columns>
4. Добавьте элемент управления BoundField в коллекцию Columns для фамилий
работников.
Ваш код должен выглядеть следующим образом:
<asp:BoundField></asp:BoundField>
5. Установите следующие свойства для элемента управления BoundField.
Атрибут
Значение
DataField
HeaderText
LastName
Last Name
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="LastName" HeaderText="Last Name">
</asp:BoundField>
6. Добавьте элемент управления BoundField в коллекцию Columns для имен
работников.
7. Установите следующие свойства для элемента управления BoundField.
Атрибут
Значение
DataField
HeaderText
FirstName
First Name
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="FirstName" HeaderText="First Name">
</asp:BoundField>
8. Добавьте элемент управления BoundField в коллекцию Columns для званий
работников.
9. Установите следующие свойства для элемента управления BoundField.
Атрибут
Значение
DataField
HeaderText
Title
Title
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="Title" HeaderText="Title">
</asp:BoundField>
10. Из раздела Data Панели инструментов перетащите элемент управления GridView
во вторую ячейку таблицы.
11. Установите следующие свойства для элемента управления GridView
Атрибут
Значение
(ID)
DataSourceID
Width
AutoGenerateColumns
GridviewTerritory
EmployeesByTerritory
100%
False
Ваш код должен выглядеть следующим образом:
<asp:GridView ID="GridviewTerritory" runat="server"
DataSourceID="EmployeesByTerritory" Width="100%"
AutoGenerateColumns="false">
</asp:GridView>
12. Добавьте элемент Columns в элемент управления GridView
<Columns>
</Columns>
13. Добавьте элемент управления BoundField в коллекцию Columns для фамилий
работников.
Ваш код должен выглядеть следующим образом:
<asp:BoundField></asp:BoundField>
14. Установите следующие свойства для элемента управления BoundField
Атрибут
Значение
DataField
HeaderText
LastName
Last Name
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="LastName" HeaderText="Last Name">
</asp:BoundField>
15. Добавьте элемент управления BoundField в коллекцию Columns для имен
работников.
16. Установите следующие свойства для элемента управления BoundField
Атрибут
Значение
DataField
HeaderText
FirstName
First Name
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="FirstName" HeaderText="First Name">
</asp:BoundField>
17. Добавьте элемент управления BoundField в коллекцию Columns для званий
работников.
18. Установите следующие свойства для элемента управления BoundField
Атрибут
Значение
DataField
HeaderText
Title
Title
Ваш код должен выглядеть следующим образом:
<asp:BoundField DataField="Title" HeaderText="Title">
</asp:BoundField>
Просмотр страницы Sales.aspx
1. Для того, чтобы сохранить страницу Sales.aspx, в меню File выберите Save
Sales.apsx.
2. В любом месте странички кликните правой кнопкой мышки и выберите View in
Browser.
3. Просмотрите результаты, разворачивая узлы элемента управления TreeView
Regions & Territories
4. Закройте браузер.
5. В меню File выберите Close Project и оставьте Visual Studio открытой для
выполнения следующего упражнения.
Упражнение 3
Модификация элемента управления GridView для обновления
данных.
Сценарий
В этом упражнении, вы будете менять элемент управления GridView и модифицировать
данные работника.
Исследование по поводу эффективности корпоративного коммерческого сайта Adventure
Works указало, что возникла необходимость сосдания отдела, который будет
модифицировать информацию о работниках в Веб-форме.
Ваша группа Веб-разработчиков должна добавить и изменить атрибуты в GridView,
чтобы обеспечить пользователей сайта возможностью модифицировать информацию в
Веб-Форме.
 Откройте Веб-узел.
1. В среде Visual Studio, в меню File, щелкните Open Web Site.
2. Выберите путь к папке ~LabFiles\Starter\language\Ex3 а затем нажимайте Open.
 Измените элемент управления SqlDataSource.
1. В Проводнике Решения (Solution Explorer), дважды щелкните страницу Sales.aspx.
Это действие открывает страницу Sales.aspx в основном окне.
2. Щелкните элемент управления SqlDataSource с идентификатором
EmployeesByRegion.
3. Установите следующее свойство элемента управления EmployeesByRegion.
Атрибут
Значение
UpdateCommand
UPDATE Employees SET FirstName = @FirstName, LastName =
@LastName, Title = @Title WHERE EmployeeID = @EmployeeID
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="EmployeesByRegion" runat="server" ConnectionString="<%$
ConnectionStrings:NWindConn %>" SelectCommand="sp_GetEmployeesByRegion"
DataSourceMode="DataReader" UpdateCommand="UPDATE Employees SET FirstName =
@FirstName, LastName = @LastName, Title = @Title WHERE EmployeeID = @EmployeeID"
SelectCommandType="StoredProcedure"><SelectParameters>
4. Щелкните EmployeesByTerritory элемента управления SqlDataSource.
5. Установите следующее свойство EmployeesByTerritory элемента управления
SqlDataSource.
Атрибут
Значение
UpdateCommand
UPDATE Employees SET FirstName = @FirstName, LastName =
@LastName, Title = @Title WHERE EmployeeID = @EmployeeID
Ваш код должен выглядеть следующим образом:
<asp:SqlDataSource ID="EmployeesByTerritory" runat="server" ConnectionString="<%$
ConnectionStrings:NWindConn %>" SelectCommand="sp_GetEmployeesByTerritory"
DataSourceMode="DataReader" UpdateCommand="UPDATE Employees SET FirstName =
@FirstName, LastName = @LastName, Title = @Title WHERE EmployeeID = @EmployeeID"
SelectCommandType="StoredProcedure"><SelectParameters>
 Измените элемент GridView.
1. Щелкните элемент управления GridviewRegion.
2. Установите следующие свойства элемента управления GridView.
Атрибут
Значение
DataKeyNames
AutoGenerateSelectButton
AutoGenerateEditButton
EmployeeID
false
true
Ваш код должен выглядеть следующим образом:
<asp:GridView ID="GridviewRegion" runat="server" DataSourceID="EmployeesByRegion"
Width="100%" AutoGenerateColumns="false" DataKeyNames="EmployeeID"
AutoGenerateSelectButton="false" AutoGenerateEditButton="true">
3. Щелкните на элементе управления GridView с идентификатором GridviewTerritory.
4. Установите следующие свойства элемента управления GridView.
Атрибут
Значение
DataKeyNames
AutoGenerateSelectButton
AutoGenerateEditButton
EmployeeID
false
true
Ваш код должен выглядеть следующим образом:
<asp:GridView ID="GridviewTerritory" runat="server"
DataSourceID="EmployeesByTerritory"
Width="100%" AutoGenerateColumns="false" DataKeyNames="EmployeeID"
AutoGenerateSelectButton="false" AutoGenerateEditButton="true">
 Просмотрите страницу Sales.aspx.
1. Чтобы сохранить страницу Sales.aspx, кликните меню File, а затем - Save Sales.apsx.
2. Кликните правой кнопкой где-нибудь на странице Sales.aspx, а затем выберите View in
Browser.
3. Выберите регион или территорию, а затем щелкните Edit в элементе управления
GridView.
4. Измените заголовок для выбранного работника, а затем кликните Update (Обновить).
5. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должны быть представлены:
 исходный код;
 результат выполненной работы в виде скриншотов.
Download