Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Техн. разр. Internet-приложений 1-9 / Лабораторная работа 1.doc
Скачиваний:
41
Добавлен:
29.03.2016
Размер:
174.59 Кб
Скачать

CheckBoxList

Некоторые голосования предполагают возможность выбора больше одного варианта.

<asp:Label ID="Label1" runat="server" Text="Как

реализуется связывание с данными в ваших ASP.NET 2.0

приложениях?"></asp:Label>

<asp:CheckBoxList ID="CheckBoxList1" runat="server">

<asp:ListItem>На каждой страничке создаётся

SqlDataSource, с ним идёт декларативное связывание.</asp:ListItem>

<asp:ListItem>В проекте есть DataSet, на страничках

ObjectDataSourcе'ы, и с ними декларативное

связывание.</asp:ListItem>

<asp:ListItem>Недекларативное связывание, запрос

прописан на каждой страничке.</asp:ListItem>

<asp:ListItem>Недекларативное связывание с

использованием одного большого DataSet'а</asp:ListItem>

</asp:CheckBoxList>

Если в CheckBoxList множество вариантов, то можно их расположить в несколько столбцов. При этом можно двигаться сверху вниз — справа налево, или наоборот. Это зависит от RepeatDirection — Horizontal или Vertical. Текст может быть расположен справа или слева от флажка.

DropDownList

Аналог этого элемента в HTML — выпадающие меню. Они задаются с помощью тегов <SELECT> и </SELECT>, между которыми находятся один или несколько тегов <OPTION>.:

<BR>Каталог

<SELECT NAME="Выбор">

<OPTION>Компьютеры

<OPTION>Принтеры

<OPTION VALUE="Комплектующие"> Комплектующие

<OPTION SELECTED>Мониторы

<OPTION>Компакт-диски

</SELECT>

DropDownList выдаст тот же самый код, если будет определен так:

<asp:DropDownList id="Выбор" runat="server">

<asp:ListItem> Компьютеры </asp:ListItem >

<asp:ListItem >Принтеры</asp:ListItem >

<asp:ListItem > Комплектующие </asp:ListItem >

<asp:ListItem Selected="true"> Мониторы </asp:ListItem >

<asp:ListItem > Компакт-диски</asp:ListItem >

</asp:DropDownList >

Итак, если мы хотим перейти с написания страниц HTML к написанию кода ASP:

<asp:DropDownList> пишется вместо <SELECT>

<asp:ListItem > вместо <OPTION>

Вместо атрибута NAME пишем атрибут id.

Вместо атрибута SELECTED пишем атрибут Selected и присваиваем ему true.

Атрибут VALUE можно задать и в HTML. Если его нет, ASP .NET генерирует его из текста ListItem:

<select name="Выбор" id="Выбор">

<option value=" Компьютеры "> Компьютеры </option>

<option value="Принтеры">Принтеры</option>

<option value=" Комплектующие "> Комплектующие </option>

<option selected="true" value=" Мониторы "> Мониторы </option>

<option value=" Компакт-диски"> Компакт-диски</option>

</select>

Отличие серверных элементов управления в том, что их можно программировать на сервере и получать информацию от них тоже на сервере.

Попробуем написать такую страницу:

<%@ Page Language="C#" %>

<script runat="server" language="C#">

void Page_Load()

{

if (Page.IsPostBack)

lblMessage.Text = "Вы выбрали " + Category.SelectedItem.Value;

}

</script>

<html xmlns=""http://www.w3.org/1999/xhtml"">

<head>

<title>Выбор категории товаров</title>

</head>

<body>

<br />

<form id="Form1" runat="server">

Выберите категорию товаров<br />

<asp:DropDownList ID="Category" runat="server">

<asp:ListItem> Компьютеры </asp:ListItem>

<asp:ListItem>Принтеры</asp:ListItem>

<asp:ListItem> Комплектующие </asp:ListItem>

<asp:ListItem Selected="true"> Мониторы </asp:ListItem>

<asp:ListItem> Компакт-диски</asp:ListItem>

</asp:DropDownList>

<input type="Submit">

<br />

<asp:Label ID="lblMessage" runat="server" />

</form>

</body>

</html>

Запустите ее на выполнение, выберите "Компакт-диски" и нажмите на кнопку. На форме появится надпись "Вы выбрали Компакт-диски".

Вот код этой страницы в браузере:

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>Выбор категории товаров</title>

</head>

<body>

<br/>

<form name="ctl00" method="post" action="DropDownList.aspx"

id="ctl00">

<div>

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

value="/wEPDwUKLTc3Mjg2Njg5MQ9kFgICAQ9kFgICAw8PFgIeBFRleHQFLtCS0Ys

g0LLRi9Cx0YDQsNC70LggINCa0L7QvNC/0LDQutGCLdC00LjRgdC60LhkZGRURXB3F

72jDHrywdZ12h2Cw2f41A==" />

</div>

Выберите категорию товаров<br />

<select name="Category" id="Category">

<option value=" Компьютеры "> Компьютеры </option>

<option value="Принтеры">Принтеры</option>

<option value=" Комплектующие "> Комплектующие </option>

<option value=" Мониторы "> Мониторы </option>

<option selected="true" value=" Компакт-диски"> Компакт-

диски</option>

</select>

<input type="Submit">

<br />

<span id="lblMessage">Вы выбрали Компакт-диски</span>

<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDA-

TION" value="/wEWBgKTtKPTDgLc5pLAAgLxxYKuBALL14rfCALaoI/9AgLP6q/dC9yI/KG

10xK67UImbEUJkicDdslR" />

</div></form>

</body>

</html>

Итак, браузеру посылается простая страница, на которой нет скриптов. То же поведение можно было бы запрограммировать с помощью JavaScript. Разница в том, что пользователь смог бы увидеть код на JavaScript, скопировать и использовать его на своих страницах. В этом нет ничего плохого, но иногда люди хотят сохранить свой код в тайне в целях защиты интеллектуальной собственности.

Посмотрим, как ASP .NET интерпретировал заголовок формы:

<form name="ctl00" method="post" action="DropDownList.aspx" id="ctl00">

Атрибуты name и id он сгенерировал самостоятельно. Их значение одинаково, разные браузеры позволяют обращаться к элементам формы по-разному: IE — черезid, а Netscape Navigator — через name. Атрибуты method и action тоже не были указаны нами, он сгенерировал их по умолчанию как post и текущая страница.

А что значит скрытый элемент разметки, который мы видим на каждой сгенерированной ASP .NET странице? Это поле, сохраняющее состояние формы. Раньше форма была отдельной страницей, и когда она отправляла серверу данные, он генерировал совершенно другую страницу. В ASP .NET форма подает себя сама, она работает на входе и на выходе.

Поэтому через специальное скрытое поле передаются значения данных формы. Если бы этого не было, в выпадающем списке всегда были бы выбраны мониторы. Информация в этом поле хранится в закодированном виде, но сервер может ее раскодировать.

Свойство Items элемента управления DropDownList имеет несколько методов для добавления и удаления строк. Используя методы Add и Insert, можно добавить элемент или вставить его в указанную позицию в DropDownList ; AddRange позволяет добавить массив элементов в DropDownList ; метод Clear удаляет все элементы; методы Remove и RemoveAt удаляют указанный элемент или элемент, находящийся в указанной позиции соответственно. Например, так можно программно создать DropDownList в функции Page_Load:

Category = new DropDownList();

Category.Items.Add("Компьютеры");

Category.Items.Add("Принтеры");

Category.Items.Add("Комплектующие");

ListItem selItem = new ListItem("Мониторы", "мониторы");

Category.Items.Add(selItem);

Category.Items.Add(new ListItem("Компакт-диски"));

Category.SelectedIndex = 3;

Чтобы очистить выбор в элементе DropDownList, установите SelectedIndex в (-1).

Если установить у ListItem свойство Enable в false, то он будет не виден в списке, однако с ним можно работать из программы. Событие SelectedIndexChangedзапускается, когда пользователь выбирает другой элемент.