Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
267
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Элементы управления Table

Добавляют к Web-формам HTML-таблицы, генерируя для браузеров комбинацию тэгов <table>, <tr> и <td>. Вот один из способов создания таблицы на Web-форме:

<table>

<tr>

<td>Row 1, Column 1</td> <td>Row 1, Column 2</td>

</tr>

<tr>

<td>Row 2, Column 1</td> <td>Row 2, Column 2</td>

</tr> </table>

А вот такая же таблица, созданная элементом управления Table:

<asp:Table ID="MyTable" RunAt="server">

<asp:TableRow>

<asp:TableCell>Row 1, Column 1</asp:TableCell>

<asp:TableCell>Row 1, Column 2</asp:TableCell>

</asp:TableRow>

<asp:TableRow>

<asp:TableCell>Row 2, Column 1</asp:TableCell>

<asp:TableCell>Row 2,Column 2</asp:TableCell>

</asp:TableRow>

</asp:Table>

Элементы управления Table полезны, когда содержимое таблицы нужно изме­нять динамически. Например, в следующем серверном сценарии изменяется текст во всех ячейках таблицы:

MyTable.Rows[0].Cells[0].Text = "Cell 1";

MyTable.Rows[0].Cells[1].Text = "Cell 2";

MyTable.Rows[1].Cells[0].Text = "Cell 3";

MyTable.Rows[1].Cells[1].Text = "Cell 4";

А этот сценарий создает во время исполнения всю таблицу: <asp:Table ID="MyTable" RunAt="server" />

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

void Page_Load (Object sender, EventArgs e)

{

for (int i=0; i<2; i++){

TableRow row = new TableRow ();

for (int j=0; j<2; j++){

TableCell cell = new TableCell ();

cell.Text = String.Format ("Row {0}, Column {1}", i + 1, j + D;

row.Cells.Add (cell);

}

MyTable.Rows.Add (row);

}

}</script>

Эти сценарии работают благодаря тому, что строки, содержащиеся в объекте Table, доступны через свойство Rows. Каждая строка набора Rows — это экземп­ляр класса TableRow. Внутри строки каждая ячейка представлена объектом ТаbleСеll, доступ к которому осуществляется посредством набора Cells объекта-строки. Вы­зов Add для набора Rows или Cells позволяет программно добавить строку к таб­лице или ячейку к строке.

По умолчанию рамки элементов управления Table невидимы. Изменить это можно, установив свойство GridLines в Horizontal, Vertical или Both. Другие свой­ства Table — CellPadding и Cellspacing — как и одноименные HTML-атрибуты, управ­ляют промежутками внутри ячеек, a BackImageUrl задает фоновую картинку. Таб­лицы часто используются Web-страницами для отображения цветного фона. Из­менить цвет фона для Table позволяет его свойство BackColor, унаследованное от WebControl.

Кнопки

Семейство Web-элементов управления включает три типа кнопок: Button, LinkButton и ImageButton. Все три имеют общее функциональное назначение: возврат содер­жащей их формы на сервер. Отличия: Button выглядит как командная кнопка, LinkButton — как гиперссылка, a ImageButton отображает заданную картинку. Прак­тически на любой Web-форме есть одна или несколько кнопок, с помощью кото­рых пользователь может отправить форму на сервер.

Ниже приведены примеры объявления экземпляров кнопок каждого типа:

<asp:Button Text="Sort" RunAt="server" />

<asp:LinkButton Text="Sort" RunAt="server" />

<asp:ImageButton ImageUrl="sort.jpg" RunAt="server" />

Свойство Text задает текст, отображаемый поверх элемента управления Button или LinkButton. ImageUrl задает картинку, отображаемую элементом управления ImageButton. Все типы кнопок генерируют по щелчку два вида событий: Click и Command. Атрибут OnClick в тэге элемента управления связывает с кнопкой обработчик Click. Обработчики Click для Button и LinkButton имеют такой прототип:

void OnClick (Object sender, EventArgs e) {

// Здесь выполняется обработка события.

}

А прототип обработчиков Click кия элементов ImageButton отличается:

void OnClick (Object sender, ImageClickEventArgs e) {

// Получить координаты щелчка.

int x = e.X;

int у = e.Y; }

События Command полезны для «совмещения» элементов управления, чтобы вы­полнять различные действия в зависимости от значения CommandArgument. Их также можно применять для связывания нескольких кнопок с одним обработчи­ком, который ведет себя по-разному в зависимости от того, какая кнопка была нажата.

Списки

В семейство элементов управления со списками входят 4 члена: ListBox, Drop-DownList, CheckBoxList и RadioButtonList. У них две общие характеристики: все они произведены от SystemWeb.UI.WebControls.ListControl и предназначены для отобра­жения списков. Элементы управления ListBox и DropDownList содержат текстовые строки, которые могут быть выбраны пользователем. Оба преобразуются в HTML-теги <select>. CheckBoxList и RadioButtonList отображают массивы флажков и пе­реключателей и преобразуются в тэги <input type=«checkbox»> и <input type=«radio»> соответственно. Тэги <input> могут содержаться в HTML-таблице для вырав­нивания.

Элементы списков представляются экземплярами класса ListItem, которые объяв­ляются тэгами <asp:ListItem>. ListItem содержит текстовые свойства Text и Value. Text — это текст элемента списка; Value — произвольная строка, связанная с этим пунктом списка. ListItem также имеет свойство Selected булевого типа указываю­щее, выбран ли данный пункт. Следующие операторы объявляют ListBox, содер­жащий 4 элемента, и выбирают второй элемент:

<asp: ListBox ID="MyListBox" RunAt="server">

<asp: Listltem Text="John" RunAt="server" />

<asp: Listltem Text="Paul" Selected="true" RunAt="server" />

<asp: Listltem Text="George" RunAt="server" />

<asp: Listltem Text="Ringo" RunAt="server" /> </asp: ListBox>

Небольшое изменение кода создает вместо ListBox элемент управления DropDownList:

<asp:DropDownList ID="MyDropDownList" RunAt="server">

<asp:ListItem Text="John" RunAt="server" />

<asp:ListItem Text="Paul" Selected="true" RunAt="server" />

<asp:ListItem Text="George" RunAt="server" />

<asp:ListItem Text="Ringo" RunAt="server" /> </asp: DropDownList>

В ListBox или DropDownList свойство Selected объекта ListItem определяет, вы­бран ли данный элемент (true) или нет (false). В CheckBoxList или RadioButtonList то же свойство определяет, включен ли данный элемент.

После возврата формы серверному сценарию не надо проверять каждый эле­мент списка, чтобы определить выбранный. Элементы управления со списками наследуют от базового класса ListControl свойства SelectedIndex и Selectedltem. Та­ким образом, сценарий может определить, какая кнопка-переключатель выбрана, считывая ее индекс (индексы начинаются с 0):

int index = MyRadioButtonList.SelectedIndex;

Для элементов управления CheckBoxList свойства SelectedIndex и SelectedItem не столь интересны, так как может быть установлено более одного флажка из списка, но для других списков они крайне полезны.

При изменении выбора, т. е. при выборе нового элемента ListBox и DropDownList или по щелчку кнопки в CheckBoxList и RadioButtonList элементы управления со списками генерируют событие SelectedIndexChanged. По умолчанию событие не генерируется, пока какое-либо иное событие не вызовет возврат формы. Однако все списки наследуют от ListControl свойство AutoPostBack, которое можно уста­новить в true, чтобы события SelectedIndexChanged генерировались немедленно.

Соседние файлы в папке ПвИ