Цель лекции: изучить принципы создания навигации по страницам Web-приложения на основе возможностей, предоставляемых ASP.NET.
Любое Web-приложение представляет собой достаточно сложную совокупность взаимосвязанных страниц. Хорошо продуманное и спроектированное Web-приложение отличается не только красивым и эргономичным дизайном, но и хорошей системой
. Все эти элементы предназначены для решения одной и той же задачи - предоставления возможности пользователю Web-приложения осуществлять .sitemap. Содержимое такого файла достаточно простое, что позволяет легко вносить данные о структуре приложения. Разделение элементов, отвечающих за отображение данных, и элементов, содержащих эти данные, позволяет значительно упростить редактирование приложения: для изменения дизайна достаточно изменить настройки визуальных компонентов, для внесения дополнений - добавить данные в XML-файл.
В качестве примера рассмотрим добавление
Прежде всего, добавим XML-файл и введем данные о структуре приложения.
Для добавления XML-файла воспользуемся стандартными средствами Visual Studio 2005 Website $$\Rightarrow$$ Add New Item. В открывшемся окне выберем пункт
(рис 7.1) Добавление карты сайтаВ результате будет создан файл Web.sitemap, содержащий заготовки для ввода структуры Web-приложения.
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/
SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
Как видно из исходного кода, <siteMap>. Элементы структуры описываются в тегах <siteMapNode>. С помощью этих тегов можно указывать иерархию элементов Web-приложения: для этого их просто необходимо расположить внутри соответствующего тега <siteMapNode>. Свойства каждого тэга необходимы для задания соответствующих значений. В примере выше видно, что каждому элементу соответствует три свойства: url, title, description. Их назначение очевидно: url используется для указания интернет-адреса страницы, которой соответствует этот элемент, title задает наименование элемента, отображаемое элементом управления, description - описание элемента, которое отображается в виде всплывающей подсказки при наведении указателя мыши на соответствующий элемент.
В качестве примера простейшей Default.aspx. Все остальные элементы будут вложены в него. Кроме того, в элемент "Страница 4" должны быть вложены еще два элемента. Пример
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/
SiteMap-File-1.0" >
<siteMapNode url="Default.aspx" title="Домашняя" description="">
<siteMapNode url="Default2.aspx" title="Страница 2"
description="Перейти к странице 2" />
<siteMapNode url="Default3.aspx" title="Страница 3"
description="" />
<siteMapNode url="Default4.aspx" title="Страница 4">
<siteMapNode url="Default5.aspx" title="Страница 5"/>
<siteMapNode url="Default6.aspx" title="Страница 6"/>
</siteMapNode>
</siteMapNode>
</siteMap>
После того как TreeView, Menu, . Элементы TreeView и Menu имеют одинаковую функциональность и предназначены для вывода элементов структуры приложения на экран. Различие заключается в форме предназначен для отображения текущего положения пользователя в иерархии Web-приложения и позволяет ему переходить вверх по иерархии на более высокий уровень. Рассмотрим примеры использования всех трех элементов управления.
Обратимся к предыдущему примеру, использующему мастер-страницы. В соответствии с описанием Default.aspx, Default2.aspx, Default3.aspx, ..., Default6.aspx.
В режиме редактирования дизайна откроем мастер-страницу .
(рис 7.2) Добавление элементов TreeView и MenuТеперь необходимо задать TreeView и Menu.
(рис 7.3) Определение источника данных элемента TreeViewДля этого нужно в свойстве Choose Data Source выбрать пункт <New data source...> и в открывшемся окне выбрать
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
(рис 7.4) Создание источника данных SiteMapПосле добавления TreeView и Menu.
(рис 7.5) Настройка внешнего вида элемента TreeViewДля элемента TreeView выберем схему оформления Arrows 2, для Menu-Classic.
После запуска приложения его окно будет выглядеть так (рис 7.6). Для перехода к соответствующей странице можно воспользоваться любым элементом меню либо дерева.
(рис 7.6) Окно Web-приложения после добавления элементов TreeView и MenuЭлементы управления TreeView и Menu обладают дополнительными свойствами, с помощью которых возможно изменить их внешний вид в соответствии с дизайном Web-приложения.
В отличие от TreeView и Menu, отображает только текущее положение пользователя в иерархии страниц Web-приложения с возможностью перехода к верхнему уровню иерархии. Добавим в пример элемент .
Для этого необходимо добавить еще одну строку между заголовком и содержимым мастер-страницы и просто поместить в нее элемент .
(рис 7.7) Добавление в приложение элемента SiteMapPath
В некоторых случаях необходимо выводить на экран структуру некоторой части Web-приложения, а не всю ее, как это было до сих пор. Например, может потребоваться, чтобы корневой узел не содержал в себе все остальные элементы приложения. Точнее, в структуре эта иерархия должна сохраняться, а на экран выводиться иначе. Для реализации этого эффекта возможно установить свойство ).
(рис 7.8) Результат отключения вывода на экран корневого элемента иерархии страниц Web-приложенияПереход к нему будет возможен посредством . В случае же, если необходимо выводить корневой элемент, но так, чтобы остальные элементы приложения не входили в него, необходимо изменить
Использование
Рассмотрим простейшие принципы создания подобных элементов.
Доступ к SiteMap. Этот класс содержит статические свойства CurrentNode и RootNode. Эти свойства возвращают объект SiteMapNode, с помощью которого можно извлекать информацию из url, description, title и т. д. Объект SiteMapNode содержит следующий ряд свойств, с помощью которых можно управлять
ParentNode |
Возвращает узел, расположенный на один уровень выше относительно текущего. В случае, если текущим является корневой узел, возвращает null. |
ChildNodes |
Возвращает коллекцию всех дочерних узлов. Проверяет свойство HasChildNodes, чтобы узнать, существуют ли дочерние узлы. |
PreviousSibling |
Возвращает предыдущий узел, который находится на том же уровне; если такого не существует, возвращает null. |
NextSibling |
Возвращает следующий узел, который находится на том же уровне; если такого не существует, возвращает null. |
Следующий код устанавливает значение элемента Label, находящегося в заголовке страницы, равным значению поля description текущего узла
lbl_BannerText.Text = SiteMap.CurrentNode.Description;
Еще один пример демонстрирует возможность создания гиперссылок, осуществляющих перемещение к последующей или к предыдущей странице.
protected void Page_Load(object sender, EventArgs e)
{
if (SiteMap.CurrentNode.NextSibling != null)
{
hl_Next.NavigateUrl = SiteMap.CurrentNode.NextSibling.Url;
hl_Next.Visible = true;
}
else
{
hl_Next.Visible = false;
}
if (SiteMap.CurrentNode.PreviousSibling != null)
{
hl_Previous.NavigateUrl = SiteMap.CurrentNode.
PreviousSibling.Url;
hl_Previous.Visible = true;
}
else
{
hl_Previous.Visible = false;
}
}
Здесь элементы .
(рис 7.9) Окно приложения, реализующего программируемую навигациюКак видно из рисунка, при активной четвертой странице переход к следующей странице невозможен, т. к. она является вложенной и относится к следующему уровню иерархии.
При создании TreeView и Menu. Возможно использование и других элементов управления в связке с GridView с GridView описывается далее, в лекции, посвященной работе с базами данных.
Кроме того, о дополнительных возможностях организации
Во многих случаях требуется организовать взаимодействие пользователя со многими страницами, причем достаточно большая часть этих страниц содержит логически сильно связанные страницы. Примерами таких случаев могут быть страницы, предназначенные для организации сбора какой-либо информации, например, регистрация пользователя, в процессе которой последний заполняет достаточно много полей данных. В этом случае размещать все эти поля на одной странице нежелательно, поскольку это не только загромождает саму страницу, но и может привести к осложнению проверки вводимых данных. В другом случае может потребоваться несколько различных вариантов и Wizard.
Данный элемент управления позволяет реализовывать управление множеством не имеет пользовательского интерфейса по умолчанию и отображает те данные, которые в него будут помещены. Содержимое, добавляемое в , должно располагаться в элементе управления View.
Рассмотрим пример создания страницы регистрации пользователя с использованием .
Создадим новое Web-приложение и расположим на его начальной странице элемент управления .
(рис 7.10) Реализация шагов регистрации пользователя с помощью MultiViewПри попытке запуска приложения в окне браузера мы не увидим ничего кроме заголовка. Это объясняется тем, что элемент отображает тот раздел, индекс которого указан в свойстве ActiveViewIndex. По умолчанию в данном свойстве установлено значение -1. Это означает, что ни один из разделов не будет показан на экране. Изменять значение элемента ActiveViewIndex необходимо программно. Это можно делать различными способами. Одним из таких способов является размещение на странице элемента управления DropDownList, который содержит список, включающий все разделы ( . Реализовать заполнение списка возможно следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DropDownList1.DataSource = MultiView1.Views;
DropDownList1.DataTextField = "ID";
DropDownList1.DataBind();
}
}
Теперь при выборе из списка какого-либо элемента необходимо изменять текущее отображение элемента . Это можно реализовать следующим образом:
protected void DropDownList1_SelectedIndexChanged(object sender,
EventArgs e)
{
MultiView1.ActiveViewIndex = DropDownList1.SelectedIndex;
}
Не забудьте, что для того, чтобы элемент управления DropDownList производил немедленное обновление страницы при изменении текущего элемента списка, необходимо установить значение свойства AutoPostBack равным true.
Результат выполнения приложения показан на рис 7.11.
(рис 7.11) Результат работы приложения, реализующего возможность регистрации пользователя с использованием MultiView содержит интеллектуальные средства. В частности, он способен распознать команды, использованные в качестве значений свойств ID кнопочных элементов управления. Например, можно добавить кнопки
В разделы "Регистрация" и "Контрольный_вопрос" необходимо добавить кнопку
<asp:Button ID="btnNext" runat="server" CommandName="NextView" Text="последующий" >"
В разделы "Контрольный_вопрос" и "Дополнительная_информация" добавить кнопку
<asp:Button ID="btnPrev" runat="server" CommandName="PrevView" Text="< предыдущий" />
Обратите внимание, что помимо стандартных атрибутов данные кнопки содержат атрибут CommandName. Именно благодаря ему элемент определяет действие, которое необходимо произвести. Кроме двух уже перечисленных действий, NextView и PrevView, допустимы еще два.
SwitchViewByID - позволяет перейти к CommandArgument кнопочного элемента управления.
SwitchViewByIndex - позволяет перейти к CommandArgument кнопочного элемента управления.
Единственным недостатком данного примера является то, что при использовании кнопок для перехода к последующему или предыдущему разделу значение элемента управления DropDownList остается всегда неизменным. Для исправления этого недостатка необходимо добавить следующий код:
protected void MultiView1_ActiveViewChanged(object sender,
EventArgs e)
{
DropDownList1.SelectedIndex = MultiView1.ActiveViewIndex;
}
Результат запуска приложения представлен на рис 7.12.
(рис 7.12) Добавление кнопок для перемещения к предыдущему или последующему элементу MultiView
Элемент управления Wizard фактически представляет собой аналог элемента с той лишь разницей, что он в основном ориентирован на создание возможности пошагового выполнения пользователем каких-либо действий. В нем реализован механизм перехода к следующему либо предыдущему шагу, возможно также переходить к определенному шагу, минуя предшествующий (нелинейная
Размещенный на странице элемент ).
(рис 7.13) Пример размещения на странице элемента WizardБоковую панель можно спрятать. Это необходимо сделать в том случае, когда нужно, чтобы пользователь не мог пропустить хотя бы один шаг и изменить последовательность выполняемых действий. Для того чтобы отключить боковую панель, необходимо установить свойство DisplaySideBar равным false.
После того как элемент Wizard добавлен на страницу, нужно определить шаги (добавить или удалить уже существующие) и их содержимое. В качестве содержимого шагов возможно использование любого элемента ASP.NET либо HTML.
Для добавления шагов в ).
(рис 7.14) Окно добавления и настройки шагов элемента WizardКаждому шагу соответствует свой набор свойств. Наиболее важными из них являются следующие:
Title |
Имя шага, соответствующее тексту ссылок в боковой панели. |
StepType |
Тип шага; может принимать значения Auto, Complete, Finish, Start, Step ; определяет тип кнопок Auto тип шага определяется на основании позиции в коллекции; это означает, что для первого шага будет установлена кнопка Start, для последнего - Finish, а для всех промежуточных шагов - Step. В случае установки значения Step будут отображаться кнопки Next и Previous и т. д. |
AllowReturn |
Определяет, может ли пользователь возвращаться к этому шагу. Если значение свойства установлено равным false, при переходе к следующему шагу пользователь уже не может вернуться к предыдущему. |
В качестве примера создадим аналог примера регистрации пользователя, рассмотренного ранее, с использованием элемента . Для этого разместим внутри страницы элемент Wizard и определим для него следующие свойства:
(рис 7.15) Добавление шагов создаваемого мастера регистрацииDisplaySideBar=false, CancelButton Text=Отмена, FinishCompleteButtonText=Готово, FinishPreviousButton Text=Предыдущий, StartNextButtonText=Следующий>, StepNextButton Text=Следующий>, StepPreviousButtonText=<Предыдущий.Wizard. Для этого необходимо ввести его значение в свойство ActiveStepIndex. Если значение этого свойства равно -1, будет отображаться первый шаг последовательности, т.к. это значение соответствует индексу шага по умолчанию. Первый шаг будет отображаться также, если значение свойства ActiveStepIndex будет равно 0. Для перехода ко второму по счету шагу установим значение этого свойства равным 1.MultiView " предыдущего примера.Результат проделанной работы и шаги мастера представлены на рис 7.17.
(рис 7.17) Добавление содержимого очередного шага мастера регистрацииВажным аспектом использования элемента Wizard является возможность программирования его реакции на возникающие события. Самыми важными событиями, обработка которых должна осуществляться Wizard, являются следующие:
ActiveStepChanged |
Возникает в момент перехода к следующему либо предыдущему шагу. Переход может быть осуществлен либо в результате щелчка пользователя по кнопке ActiveStepIndex. Т. к. переход к следующему либо предыдущему шагу возможен различными способами, рекомендуется всегда использовать это событие для отслеживания момента перехода. |
CancelButtonClick |
Возникает в момент нажатия пользователем на кнопку Cancel (Отмена). Данную кнопку можно добавить в отображение мастера (по умолчанию она не отображается), установив значение свойства DisplayCancelButton равным true. Если задано значение свойства CancelDestinationPageUrl, при нажатии на кнопку Cancel будет происходить переход к странице, Url которой указан в данном свойстве. |
FinishButtonClick |
Возникает в момент нажатия на кнопку Finish. |
Очень полезную функциональность предоставляет метод GetHistory, возвращающий коллекцию объектов WizardStepBase, представляющих собой шаги, которые уже прошел пользователь. Первый объект коллекции представляет последний шаг, к которому обращался пользователь, второй - предпоследний и т. д.
Современные Web-приложения представляют собой сложную совокупность взаимосвязанных страниц. При разработке такого приложения необходимо уделять внимание не только дизайну, но и организации удобной
При реализации больших Web-приложений, содержащих большое количество страниц, целесообразно использовать . Используя в качестве
Использование перечисленных выше элементов управления дает возможность реализовывать полноценную систему SiteMap.
Очень часто при реализации Web-приложения бывает необходимо организовывать взаимодействие пользователя со многими страницами, логически сильно связанными друг с другом. Наиболее предпочтительным решением в данном случае является использование элементов управления, позволяющих реализовывать управление множеством и Wizard.
Цель лекции: изучить принципы создания навигации по страницам Web-приложения на основе возможностей, предоставляемых ASP.NET.
Любое Web-приложение представляет собой достаточно сложную совокупность взаимосвязанных страниц. Хорошо продуманное и спроектированное Web-приложение отличается не только красивым и эргономичным дизайном, но и хорошей системой
. Все эти элементы предназначены для решения одной и той же задачи - предоставления возможности пользователю Web-приложения осуществлять .sitemap. Содержимое такого файла достаточно простое, что позволяет легко вносить данные о структуре приложения. Разделение элементов, отвечающих за отображение данных, и элементов, содержащих эти данные, позволяет значительно упростить редактирование приложения: для изменения дизайна достаточно изменить настройки визуальных компонентов, для внесения дополнений - добавить данные в XML-файл.
В качестве примера рассмотрим добавление
Прежде всего, добавим XML-файл и введем данные о структуре приложения.
Для добавления XML-файла воспользуемся стандартными средствами Visual Studio 2005 Website $$\Rightarrow$$ Add New Item. В открывшемся окне выберем пункт
(рис 7.1) Добавление карты сайтаВ результате будет создан файл Web.sitemap, содержащий заготовки для ввода структуры Web-приложения.
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/
SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
Как видно из исходного кода, <siteMap>. Элементы структуры описываются в тегах <siteMapNode>. С помощью этих тегов можно указывать иерархию элементов Web-приложения: для этого их просто необходимо расположить внутри соответствующего тега <siteMapNode>. Свойства каждого тэга необходимы для задания соответствующих значений. В примере выше видно, что каждому элементу соответствует три свойства: url, title, description. Их назначение очевидно: url используется для указания интернет-адреса страницы, которой соответствует этот элемент, title задает наименование элемента, отображаемое элементом управления, description - описание элемента, которое отображается в виде всплывающей подсказки при наведении указателя мыши на соответствующий элемент.
В качестве примера простейшей Default.aspx. Все остальные элементы будут вложены в него. Кроме того, в элемент "Страница 4" должны быть вложены еще два элемента. Пример
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/
SiteMap-File-1.0" >
<siteMapNode url="Default.aspx" title="Домашняя" description="">
<siteMapNode url="Default2.aspx" title="Страница 2"
description="Перейти к странице 2" />
<siteMapNode url="Default3.aspx" title="Страница 3"
description="" />
<siteMapNode url="Default4.aspx" title="Страница 4">
<siteMapNode url="Default5.aspx" title="Страница 5"/>
<siteMapNode url="Default6.aspx" title="Страница 6"/>
</siteMapNode>
</siteMapNode>
</siteMap>
После того как TreeView, Menu, . Элементы TreeView и Menu имеют одинаковую функциональность и предназначены для вывода элементов структуры приложения на экран. Различие заключается в форме предназначен для отображения текущего положения пользователя в иерархии Web-приложения и позволяет ему переходить вверх по иерархии на более высокий уровень. Рассмотрим примеры использования всех трех элементов управления.
Обратимся к предыдущему примеру, использующему мастер-страницы. В соответствии с описанием Default.aspx, Default2.aspx, Default3.aspx, ..., Default6.aspx.
В режиме редактирования дизайна откроем мастер-страницу .
(рис 7.2) Добавление элементов TreeView и MenuТеперь необходимо задать TreeView и Menu.
(рис 7.3) Определение источника данных элемента TreeViewДля этого нужно в свойстве Choose Data Source выбрать пункт <New data source...> и в открывшемся окне выбрать
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
(рис 7.4) Создание источника данных SiteMapПосле добавления TreeView и Menu.
(рис 7.5) Настройка внешнего вида элемента TreeViewДля элемента TreeView выберем схему оформления Arrows 2, для Menu-Classic.
После запуска приложения его окно будет выглядеть так (рис 7.6). Для перехода к соответствующей странице можно воспользоваться любым элементом меню либо дерева.
(рис 7.6) Окно Web-приложения после добавления элементов TreeView и MenuЭлементы управления TreeView и Menu обладают дополнительными свойствами, с помощью которых возможно изменить их внешний вид в соответствии с дизайном Web-приложения.
В отличие от TreeView и Menu, отображает только текущее положение пользователя в иерархии страниц Web-приложения с возможностью перехода к верхнему уровню иерархии. Добавим в пример элемент .
Для этого необходимо добавить еще одну строку между заголовком и содержимым мастер-страницы и просто поместить в нее элемент .
(рис 7.7) Добавление в приложение элемента SiteMapPath
В некоторых случаях необходимо выводить на экран структуру некоторой части Web-приложения, а не всю ее, как это было до сих пор. Например, может потребоваться, чтобы корневой узел не содержал в себе все остальные элементы приложения. Точнее, в структуре эта иерархия должна сохраняться, а на экран выводиться иначе. Для реализации этого эффекта возможно установить свойство ).
(рис 7.8) Результат отключения вывода на экран корневого элемента иерархии страниц Web-приложенияПереход к нему будет возможен посредством . В случае же, если необходимо выводить корневой элемент, но так, чтобы остальные элементы приложения не входили в него, необходимо изменить
Использование
Рассмотрим простейшие принципы создания подобных элементов.
Доступ к SiteMap. Этот класс содержит статические свойства CurrentNode и RootNode. Эти свойства возвращают объект SiteMapNode, с помощью которого можно извлекать информацию из url, description, title и т. д. Объект SiteMapNode содержит следующий ряд свойств, с помощью которых можно управлять
ParentNode |
Возвращает узел, расположенный на один уровень выше относительно текущего. В случае, если текущим является корневой узел, возвращает null. |
ChildNodes |
Возвращает коллекцию всех дочерних узлов. Проверяет свойство HasChildNodes, чтобы узнать, существуют ли дочерние узлы. |
PreviousSibling |
Возвращает предыдущий узел, который находится на том же уровне; если такого не существует, возвращает null. |
NextSibling |
Возвращает следующий узел, который находится на том же уровне; если такого не существует, возвращает null. |
Следующий код устанавливает значение элемента Label, находящегося в заголовке страницы, равным значению поля description текущего узла
lbl_BannerText.Text = SiteMap.CurrentNode.Description;
Еще один пример демонстрирует возможность создания гиперссылок, осуществляющих перемещение к последующей или к предыдущей странице.
protected void Page_Load(object sender, EventArgs e)
{
if (SiteMap.CurrentNode.NextSibling != null)
{
hl_Next.NavigateUrl = SiteMap.CurrentNode.NextSibling.Url;
hl_Next.Visible = true;
}
else
{
hl_Next.Visible = false;
}
if (SiteMap.CurrentNode.PreviousSibling != null)
{
hl_Previous.NavigateUrl = SiteMap.CurrentNode.
PreviousSibling.Url;
hl_Previous.Visible = true;
}
else
{
hl_Previous.Visible = false;
}
}
Здесь элементы .
(рис 7.9) Окно приложения, реализующего программируемую навигациюКак видно из рисунка, при активной четвертой странице переход к следующей странице невозможен, т. к. она является вложенной и относится к следующему уровню иерархии.
При создании TreeView и Menu. Возможно использование и других элементов управления в связке с GridView с GridView описывается далее, в лекции, посвященной работе с базами данных.
Кроме того, о дополнительных возможностях организации
Во многих случаях требуется организовать взаимодействие пользователя со многими страницами, причем достаточно большая часть этих страниц содержит логически сильно связанные страницы. Примерами таких случаев могут быть страницы, предназначенные для организации сбора какой-либо информации, например, регистрация пользователя, в процессе которой последний заполняет достаточно много полей данных. В этом случае размещать все эти поля на одной странице нежелательно, поскольку это не только загромождает саму страницу, но и может привести к осложнению проверки вводимых данных. В другом случае может потребоваться несколько различных вариантов и Wizard.
Данный элемент управления позволяет реализовывать управление множеством не имеет пользовательского интерфейса по умолчанию и отображает те данные, которые в него будут помещены. Содержимое, добавляемое в , должно располагаться в элементе управления View.
Рассмотрим пример создания страницы регистрации пользователя с использованием .
Создадим новое Web-приложение и расположим на его начальной странице элемент управления .
(рис 7.10) Реализация шагов регистрации пользователя с помощью MultiViewПри попытке запуска приложения в окне браузера мы не увидим ничего кроме заголовка. Это объясняется тем, что элемент отображает тот раздел, индекс которого указан в свойстве ActiveViewIndex. По умолчанию в данном свойстве установлено значение -1. Это означает, что ни один из разделов не будет показан на экране. Изменять значение элемента ActiveViewIndex необходимо программно. Это можно делать различными способами. Одним из таких способов является размещение на странице элемента управления DropDownList, который содержит список, включающий все разделы ( . Реализовать заполнение списка возможно следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DropDownList1.DataSource = MultiView1.Views;
DropDownList1.DataTextField = "ID";
DropDownList1.DataBind();
}
}
Теперь при выборе из списка какого-либо элемента необходимо изменять текущее отображение элемента . Это можно реализовать следующим образом:
protected void DropDownList1_SelectedIndexChanged(object sender,
EventArgs e)
{
MultiView1.ActiveViewIndex = DropDownList1.SelectedIndex;
}
Не забудьте, что для того, чтобы элемент управления DropDownList производил немедленное обновление страницы при изменении текущего элемента списка, необходимо установить значение свойства AutoPostBack равным true.
Результат выполнения приложения показан на рис 7.11.
(рис 7.11) Результат работы приложения, реализующего возможность регистрации пользователя с использованием MultiView содержит интеллектуальные средства. В частности, он способен распознать команды, использованные в качестве значений свойств ID кнопочных элементов управления. Например, можно добавить кнопки
В разделы "Регистрация" и "Контрольный_вопрос" необходимо добавить кнопку
<asp:Button ID="btnNext" runat="server" CommandName="NextView" Text="последующий" >"
В разделы "Контрольный_вопрос" и "Дополнительная_информация" добавить кнопку
<asp:Button ID="btnPrev" runat="server" CommandName="PrevView" Text="< предыдущий" />
Обратите внимание, что помимо стандартных атрибутов данные кнопки содержат атрибут CommandName. Именно благодаря ему элемент определяет действие, которое необходимо произвести. Кроме двух уже перечисленных действий, NextView и PrevView, допустимы еще два.
SwitchViewByID - позволяет перейти к CommandArgument кнопочного элемента управления.
SwitchViewByIndex - позволяет перейти к CommandArgument кнопочного элемента управления.
Единственным недостатком данного примера является то, что при использовании кнопок для перехода к последующему или предыдущему разделу значение элемента управления DropDownList остается всегда неизменным. Для исправления этого недостатка необходимо добавить следующий код:
protected void MultiView1_ActiveViewChanged(object sender,
EventArgs e)
{
DropDownList1.SelectedIndex = MultiView1.ActiveViewIndex;
}
Результат запуска приложения представлен на рис 7.12.
(рис 7.12) Добавление кнопок для перемещения к предыдущему или последующему элементу MultiView
Элемент управления Wizard фактически представляет собой аналог элемента с той лишь разницей, что он в основном ориентирован на создание возможности пошагового выполнения пользователем каких-либо действий. В нем реализован механизм перехода к следующему либо предыдущему шагу, возможно также переходить к определенному шагу, минуя предшествующий (нелинейная
Размещенный на странице элемент ).
(рис 7.13) Пример размещения на странице элемента WizardБоковую панель можно спрятать. Это необходимо сделать в том случае, когда нужно, чтобы пользователь не мог пропустить хотя бы один шаг и изменить последовательность выполняемых действий. Для того чтобы отключить боковую панель, необходимо установить свойство DisplaySideBar равным false.
После того как элемент Wizard добавлен на страницу, нужно определить шаги (добавить или удалить уже существующие) и их содержимое. В качестве содержимого шагов возможно использование любого элемента ASP.NET либо HTML.
Для добавления шагов в ).
(рис 7.14) Окно добавления и настройки шагов элемента WizardКаждому шагу соответствует свой набор свойств. Наиболее важными из них являются следующие:
Title |
Имя шага, соответствующее тексту ссылок в боковой панели. |
StepType |
Тип шага; может принимать значения Auto, Complete, Finish, Start, Step ; определяет тип кнопок Auto тип шага определяется на основании позиции в коллекции; это означает, что для первого шага будет установлена кнопка Start, для последнего - Finish, а для всех промежуточных шагов - Step. В случае установки значения Step будут отображаться кнопки Next и Previous и т. д. |
AllowReturn |
Определяет, может ли пользователь возвращаться к этому шагу. Если значение свойства установлено равным false, при переходе к следующему шагу пользователь уже не может вернуться к предыдущему. |
В качестве примера создадим аналог примера регистрации пользователя, рассмотренного ранее, с использованием элемента . Для этого разместим внутри страницы элемент Wizard и определим для него следующие свойства:
(рис 7.15) Добавление шагов создаваемого мастера регистрацииDisplaySideBar=false, CancelButton Text=Отмена, FinishCompleteButtonText=Готово, FinishPreviousButton Text=Предыдущий, StartNextButtonText=Следующий>, StepNextButton Text=Следующий>, StepPreviousButtonText=<Предыдущий.Wizard. Для этого необходимо ввести его значение в свойство ActiveStepIndex. Если значение этого свойства равно -1, будет отображаться первый шаг последовательности, т.к. это значение соответствует индексу шага по умолчанию. Первый шаг будет отображаться также, если значение свойства ActiveStepIndex будет равно 0. Для перехода ко второму по счету шагу установим значение этого свойства равным 1.MultiView " предыдущего примера.Результат проделанной работы и шаги мастера представлены на рис 7.17.
(рис 7.17) Добавление содержимого очередного шага мастера регистрацииВажным аспектом использования элемента Wizard является возможность программирования его реакции на возникающие события. Самыми важными событиями, обработка которых должна осуществляться Wizard, являются следующие:
ActiveStepChanged |
Возникает в момент перехода к следующему либо предыдущему шагу. Переход может быть осуществлен либо в результате щелчка пользователя по кнопке ActiveStepIndex. Т. к. переход к следующему либо предыдущему шагу возможен различными способами, рекомендуется всегда использовать это событие для отслеживания момента перехода. |
CancelButtonClick |
Возникает в момент нажатия пользователем на кнопку Cancel (Отмена). Данную кнопку можно добавить в отображение мастера (по умолчанию она не отображается), установив значение свойства DisplayCancelButton равным true. Если задано значение свойства CancelDestinationPageUrl, при нажатии на кнопку Cancel будет происходить переход к странице, Url которой указан в данном свойстве. |
FinishButtonClick |
Возникает в момент нажатия на кнопку Finish. |
Очень полезную функциональность предоставляет метод GetHistory, возвращающий коллекцию объектов WizardStepBase, представляющих собой шаги, которые уже прошел пользователь. Первый объект коллекции представляет последний шаг, к которому обращался пользователь, второй - предпоследний и т. д.
Современные Web-приложения представляют собой сложную совокупность взаимосвязанных страниц. При разработке такого приложения необходимо уделять внимание не только дизайну, но и организации удобной
При реализации больших Web-приложений, содержащих большое количество страниц, целесообразно использовать . Используя в качестве
Использование перечисленных выше элементов управления дает возможность реализовывать полноценную систему SiteMap.
Очень часто при реализации Web-приложения бывает необходимо организовывать взаимодействие пользователя со многими страницами, логически сильно связанными друг с другом. Наиболее предпочтительным решением в данном случае является использование элементов управления, позволяющих реализовывать управление множеством и Wizard.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.