| Украина, Киев |
Многокадровые элементы управления
Файлы к лабораторной работе Вы можете скачать
здесь.
Два высокоразвитых элемента управления MultiView и Wizard позволяют организовать для пользователя имитацию сложного многостраничного просмотра. Они содержат встроенные средства локальной навигации, обеспечивающие смену кадров с разным пользовательским интерфейсом, но единым оформлением.
Упражнение 1. Элемент управления MultiView
Элемент управления MultiView позволяет разработчику организовать страницу в виде множества вкладок. Каждая вкладка может содержать свой пользовательский интерфейс и обеспечивать свою форму представления информации пользователю. На этапе проектирования все вкладки раскрыты и представляют собой набор вариантов, заготавливаемых для отображения клиенту. Но генерировать HTML-отклик клиенту на его текущий запрос может только какая-то одна вкладка, посылая свой вариант заранее заготовленного материала.
-
Создайте
новый пустой проект с именем MultiView,
выполнив команду меню File/New/WebSite и
определив параметры мастера так
-
Командой Add New Item добавьте к проекту
страницу типа Web Form
с отделенным кодом и именем MultiViewControl.aspx
-
Поместите
на страницу в режиме редактора Design из
вкладки Standard компонент-контейнер MultiView
-
Поместите
на страницу в режиме редактора Design внутрь
созданного объекта MultiView1 из
той же вкладки Standard три экземпляра компонента View (компонент View называют представлением данных)
В результате оболочка сгенерирует следующий код разметки
<%@ Page AutoEventWireup="true"
CodeFile="MultiViewControl.aspx.cs"
Inherits="MultiViewControl" Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
</asp:View>
<asp:View ID="View2" runat="server">
</asp:View>
<asp:View ID="View3" runat="server">
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>
Листинг
34.1.
Дескрипторный код файла MultiViewControl.aspx
-
Запустите
приложение и вы получите чистый экран броузера, поскольку
созданные вкладки - представления еще не были заполнены интерфейсными
элементами, поэтому они ничего и не
генерируют для клиента
Замечание. Представления View можно добавлять и программно по мере необходимости (как и любой другой элемент управления). Для этого нужно создать экземпляр (например, View1 ) нового представления и добавить ссылку на него в коллекцию Views экземпляра (например, MultiView1 ) элемента MultiView с помощью MultiView1.Views.Add(View1) или MultiView1.Views.AddAt(index, View1). Свойство Views определено в классе System.Web.UI.WebControls.ViewCollection, который и имеет указанные методы Add() и AddAt(). Но мы будем для простоты использовать декларативный способ этапа проектирования.
Web-форма в оболочке после наших действий будет иметь вид
Какое представление будет генерировать элемент MultiView, зависит от значения свойства MultiView.ActiveViewIndex, доступного декларативно и программно. Если значение этого свойства равно " -1 ", то при исполнении страницы ни одна из вкладок не будет генерировать HTML-отклик. Если свойство установлено в ноль, то будет работать первая вкладка, и т.д.
Продолжим выполнение упражнения и наполним представления View1, View2, View3 вариантами содержимого.
-
Командой Add Existing Item добавьте в корневую папку сайта
какой-нибудь рисунок Web-формата (*. gif,
*. jpg, *. png ),
который занимает не очень много места. Один из вариантов
рисунка - файл MyPhoto.jpg в
прилагаемой папке Source
-
Поместите
в представление View1 из вкладки Standard компонент Image (контейнер
для рисунка) и через панель Properties декларативно настройте
его так:
-
Поместите
в представление View2 какой-нибудь текст -
Поместите
в представление View3 элемент Calendar из
вкладки Standard и настройте его
внешний вид -
Выделите
объект MultiView1 и установите его свойство ActiveViewIndex в
значение ноль, чтобы при начальной загрузке
страницы было открыто первое представление
После выполненных действий разметка страницы будет описываться следующим кодом
<%@ Page AutoEventWireup="true"
CodeFile="MultiViewControl.aspx.cs"
Inherits="MultiViewControl" Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Элемент управления множеством представлений</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
<h1>Мое фото</h1>
<asp:Image ID="Image1" runat="server" ImageUrl="~/MyPhoto.jpg" />
</asp:View>
<asp:View ID="View2" runat="server">
<h1>Мои стихи</h1>
<p>
У Лукоморья дуб зеленый<br />
Златая цепь на дубе том<br />
И днем и ночью кот ученый<br />
Все ходит по цепи кругом
</p>
</asp:View>
<asp:View ID="View3" runat="server">
<h1>Мой календарь</h1>
<asp:Calendar ID="Calendar1" runat="server" BackColor="#C0FFFF"
BorderColor="Red" BorderStyle="Ridge">
</asp:Calendar>
</asp:View>
</asp:MultiView>
</div>
</form>
</body>
</html>
Листинг
34.2.
Код разметки страницы MultiViewControl.aspx
Если сейчас запустить страницу MultiViewControl.aspx на выполнение, то мы увидим только первую раскрытую вкладку с фотографией, а для активизации других вкладок у нас нет пока механизма.

