Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 961

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Code и попадем на вкладку файла программной поддержки WebForm1.aspx.es. В листинге 13.8 при­веден соответствующий программный код.

Листинг 13.8. Таблица с переменным числом ячеек

// Tаблица с переменным числом ячеек, управляемая двумя раскрывающимися списками. Web-страница позволяет с

// помощью двух раскрывающихся списков DropDownList заказать необходимое число рядов и столбцов в таблице,

// а затем строить заказанную таблицу

using System;

using System.Web.UI.WebControls;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace tab

{

public partial class WebForm1: Systern.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Page.Title = "Укажите размерность таблицы";

if (Page.IsPostBack == true) return;

// Заполнять выпадающий список необходимо при первой загрузке

// страницы IsPostBack = false, иначе будут добавляться новые

// пункты в выпадающей список при каждой перегрузке страницы

DropDownList1.Items.Add("1"); DropDownList1.Items.Add("2"); DropDownList1.Items.Add("3");

DropDownList2.Items.Add("1"); DropDownList2.Items.Add("2"); DropDownList2.Items.Add("3");

Table1.Caption = "Название таблицы";

Table1.CaptionAlign = TableCaptionAlign.Right;

Table1.ToolTip = "Укажи количество рядов и столбцов и нажми кнопку";

Table1. BorderStyle = BorderStyle.Solid;

Table1.GridLines = GridLines.Both;

Label1.Text = "Кол-во строк"; Label2.Text = "Кол-во столбцов";

Button1.Text = "Обновить таблицу";

}

protected void Button1_Click(object sender, EventArgs e)

{

int i, j ;

for (i = 1; i <= int.Parse(DropDownListl.Selectedltem.Value); i++)

{

var РЯД = new TableRow ();

for (j = 1; j <= int.Parse(DropDownList2.Selectedltem.Value); j++)

{

var ЯЧЕЙКА = new TableCell();

ЯЧЕЙКА.Text = "Ряд " + i + ", Кол " + j;

ЯЧЕЙКА.HorizontalAlign = HorizontalAlign.Center;

РЯД.Cells.Add(ЯЧЕЙКА);

}

Table1.Rows.Add(РЯД);

}

}

}

}

Как видно из программного кода, при загрузке страницы Page_Load происходит заполнение значениями раскрывающихся списков DropDownList, причем заполнение осуществляется только при первоначальной загрузке страницы, когда IsPostBack = false. Если бы мы не предусмотрели обход присвоения начальных значений при IsPostBack = true, то значения в списке добавлялись бы каждый раз при очередной перезагрузке страницы. Заметим, что мы могли бы и не контролировать IsPostBack, если бы присвоение начальных значений выполнили в процедуре обработки события инициализации страницы Page_PreInitVisual Studio 2003 это событие называлось Page_Init).

Свойства других элементов управления также инициализированы при обработке события загрузки
Web-страницы Page_Load. Мы могли бы это сделать в конструкторе, но для удобства читателя приводим их в программном коде. Назначения этихсвойств очевидны и не требуют дополнительных комментариев.

При обработке события "щелчок на кнопке" Обновить таблицу имеем два вложенных цикла. Параметры обоих циклов i и j изменяются от 1 до значения, выбранного пользователем в соответствующем раскрывающемся списке. Метод int.Parse пространства имен System конвертирует строку из соответствующего свойства объекта DropDownList в переменную типа int. Внешний цикл перебирает ряды таблицы, а внутренний — ячейки таблицы. В теле внешнего цикла очередная итерация создает новый объект ряд класса TableRow, аналогично в теле внутренне­го цикла каждый раз создается новый объект ячейка класса TableCell.

Для старта созданного проекта нажмем клавишу <F5>. В результате получим примерно такое отображение таблицы, как показано на рис. 13.12.

Убедиться в работоспособности Web-страницы можно, открыв решение tab.sln в папке tab.




Рис. 13.12. Фрагмент работы Web-страницы с таблицей

Пример 96. Организация раскрывающегося меню гиперссылок с помощью DropDownList

Переходы на другие Web-страницы, так называемую навигацию, в статических HTML-страницах обычно организуют с помощью ряда гиперссылок. Например, сайт состоит из десяти Web-страниц. На каждой из этих страниц слева имеем колонку из десяти строчек текстовых гиперссылок для перехода на эти страницы В данном примере продемонстрируем, как можно организовать переход на разные страницы сайта с помощью раскрывающегося списка DropDownList.

Для реализации этой задачи запустим систему Visual Studio 2010, далее — новый проект из шаблона Empty ASP.NET Web Application, имя — Menu. К текущему проекту добавим Web-форму. Для этого в пункте меню Project выберем команду Add New Item и в появившемся окне дважды щелкнем на шаблоне Web Form.

Затем на проектируемую Web-форму перетащим из раздела Standard панели Toolbox элемент управления DropDownList и метку Label. Теперь перейдем к вкладке файла программной поддержки WebForm1.aspx.cs и здесь организуем ги­перссылки от каждого пункта меню на некоторые Web-страницы, созданные в дан­ной главе. Текст программы приведен в листинге 13.9.

Листинг 13.9. Организация навигации по Web-страницам

// Web-страница демонстрирует, как можно организовать переход на разные

// страницы сайта (гиперссылки) с помощью раскрывающегося списка DropDownList

using System;

using System.Web.UI.WebControls;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace Menu

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Page.Title = "Переход на другую страницу:",-
if (Page.IsPostBack == true) return;
// Можно писать так:

// var it1 = new System.Web.UI.WebControls.Listltem();

// it1.Text = "Сложить два числа";

// it1.Value = "Summa.aspx";

// DropDownListl.Items.Add(it1);

// А можно короче:

// DropDownList1.Items.Add(new Listltem("Имя", "значение"))

DropDownList1.Items.Add(new Listltem("Остаться на этой странице", "WebForm1 .aspx")) ; DropDownList1.Items.Add(new Listltem( "Проверка достоверности введенных данных","Validations.aspx")); DropDownList1.Items.Add(new Listltem( "Управляемая таблица", "tab.aspx"));

// Выполнять ли повторную отправку (постбэк), когда

// пользователь сделает выбор в раскрывающемся списке?

DropDownList1.AutoPostBack = true;

// При AutoPostBack = True будет работать

// событие DropDownListl_SelectedIndexChanged.

Label1.Text = "Перейти на другую Web-страницу:";

}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)


{ // Выполнить команду перехода на другую страницу:

Response.Redirect(DropDownListl.SelectedValue);

}

//protected void Page_PreInit(object sender, EventArgs e)

//{

// Мы могли бы заполнять пункты раскрывающегося списка DropDownList

// не при загрузке формы, а при ее инициализации (событие

// Page_PreInit), тогда не надо думать про постбэк.

// Чтобы получить обработчик этого события, надо просто его

// написать: protected void Page_PreInit...

//}

}

}

Здесь, так же как и в предыдущем примере, мы заполняли пункты раскрываю­щегося списка при первой загрузке страницы IsPostBack = false. Это можно бы­ло бы делать также при инициализации Web-страницы (событие Page_PreInit). Причем заполняли список по формату ("Имя", "Значение"). Здесь "Имя" будет вид­но в пунктах меню, а "Значение" можно использовать функционально.

Кроме того, для раскрывающегося списка мы указали свойство AutoPostBack = true, что приведет к повторной отправке, когда пользователь сделает свой выбор в раскрывающемся списке, причем в этом случае будет доступно событие SelectedIndexChanged. Именно этим событием мы воспользовались для перена­правления (Redirect) браузера на выбранную пользователем страницу.

Как видно, все выбираемые пользователем Web-страницы являются активными ASPX-страницами. Чтобы добавить их в текущий проект следует выбрать в пункте меню Project команду Add New Item и дважды щелкнуть на шаблоне Web Form. В окне Solution Explorer щелкнем правой кнопкой мыши на названии файла и пе­реименуем новую Web-форму из WebForm2.aspx в Validations.aspx. Аналогично следует добавить вторую вызываемую Web-форму и назвать ее tab.aspx. Перед стартом программы (<F5>) в окне Solution Explorer правой кнопкой мыши щелкнем по изображению файла WebForm1.aspx и в контекстном меню выберем команду Set As Start Page, чтобы программа начала работу с этой страницы.

Фрагмент работы данной Web-страницы приведен на рис. 13.13.



Рис. 13.13. Фрагмент работы Web-страницы, использующей раскрывающийся список

Упомянутая функция Redirect является методом объекта Response. Очень часто пользуются методом Write объекта Response для вывода в Web-форму каких-либо данных, в том числе для тестирования, отладки программы. Вообще говоря, в технологии ASP.NET имеются два очень важных объекта: Response и Request, объект Response содержит данные для передачи от сервера клиенту, а объект
Request — информацию, полученную от пользователя. В дальнейшем мы будем вращаться к этим двум объектам.

Убедиться в работоспособности Web-страницы можно, открыв решение Menu.sln в папке Menu.

Пример 97. Передача данных между Web-страницами через параметры гиперссылки

Передача данных между Web-страницами одного сайта может происходить через файлы, через объект Session, а может быть реализована через параметры, указанные в гиперссылке. Эти параметры также называют строкой запроса. Например, пересылка <a href="Target.aspx?nl=77&n2='Зиборов' "> после вопросительного знака содержит два параметра— n1 и п2. Значения этих параметров будут переданы в Web-документ Target.aspx. Прочитать эти параметры в Target.aspx можно с помощью объекта Request.

В данном примере создадим две Web-страницы: Source.aspx и Target.aspx. На первой странице Source.aspx с помощью генератора случайных чисел Random выбираем одну из пар "имя—фамилия", затем кодируем их, чтобы они не были видны в адресной строке. Щелчок пользователя по гиперссылке вызывает переход на страницу Target.aspx, причем в гиперссылке указаны оба закодированных параметра. На этой новой странице с помощью объекта Request получаем оба переданных па­раметра и выводим их в Web-документе.

Для реализации данной задачи запустим Visual Studio 2010, далее в окне New project выберем шаблон Empty ASP.NET Web Application, в поле Name укажем имя Ssylka. К текущему проекту добавим Web-форму. Для этого в пункте меню Рroject выберем команду Add New Item и в появившемся окне дважды щелкнем на шаблоне Web Form.

В этом проекте будем программировать две Web-формы: одну назовем Source.aspx, а вторую— Target.aspx. Сначала спроектируем первую форму, для этого в окне Solution Explorer переименуем файл WebForm1.aspx в Source.aspx. Теперь на вкладку Source.aspx из раздела Standard панели Toolbox перенесем элемент управления HyperLink (Гиперссылка). Содержимое файла программной поддержки Source.aspx.cs приведено в листинге 13.10.

Листинг 13.10. Передача данных между Web-страницами через параметры гиперссылки

// Передача данных между Web-страницами через параметры гиперссылки. В данном

// примере имеем две Web-страницы: Source.aspx и Target.aspx. На первой

// странице Source.aspx с помощью генератора случайных чисел Random выбираем