Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Отправка данных другой странице






В ASP.NET 1.1 не разрешалась отправка данных между страницами. В ASP.NET 2.0 элементы управления имеют свойство PostBackUrl, где можно указать, какой странице система должна передать Web-форму, если отправление данных на сервер инициировано этим элементом управления.

Через свойство PreviousPage страницы можно выяснить, какая страница была источником постбэка нашей страницы.

На первой странице рисуется календарь:

< %@ Page Language=" C#" %> <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" " https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < script runat=" server" > < /script> < html xmlns=" https://www.w3.org/1999/xhtml" > < head runat=" server" > < title> Первая страница< /title> < /head> < body> < form id = " form1" runat= " server" > Ваше имя: < br /> < asp: Textbox ID=" TextBox1" Runat=" server" > < /asp: Textbox> < p> Желаемая дата вылета? < br /> < asp: Calendar ID=" Calendar1" Runat=" server" > < /asp: Calendar> < /p> < br /> < asp: Button ID=" Button2" Runat=" server" Text=" Submit page to Page2.aspx" PostBackUrl=" Page2.aspx" /> < p> < asp: Label ID=" Label1" Runat=" server" > < /asp: Label> < /p> < /form> < /body> < /html>

А на второй читаются значения первой формы:

< %@ Page Language=" C#" %> <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" " https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < script runat=" server" > protected void Page_Load(object sender, System.EventArgs e){ if (PreviousPage! = null) { TextBox pp_Textbox1; Calendar pp_Calendar1; pp_Textbox1 = (TextBox)PreviousPage.FindControl(" Textbox1"); pp_Calendar1 = (Calendar)PreviousPage.FindControl(" Calendar1"); Label1.Text = " Здравствуйте, " + pp_Textbox1.Text + "! < br /> " + " Вы выбрали: " + pp_Calendar1.SelectedDate.ToShortDateString(); }}< /script> < html xmlns=" https://www.w3.org/1999/xhtml" > < head runat=" server" > < title> Вторая страница< /title> < /head> < body> < form id=" form1" runat=" server" > < div> < asp: Label ID=" Label1" Runat=" server" > < /asp: Label> < /div> < /form> < /body> < /html>

Заключение

Мы рассмотрели только некоторые элементы управления и убедились, что они предоставляют богатые возможности. Далее мы рассмотрим другой важный класс элементов управления — валидаторы.

 

 

 

4: AutoPostBack. Привязка к данным. Коллекции. Проверка правильности вводимых данных: Привязка к данным с помощью коллекций. Примеры на использование коллекций ArrayList, Hashtable. Элементы управления группы Validation.
Свойство AutoPostBack Программирование в ASP.NET ориентировано на события. События на странице (например нажатие на кнопку) обрабатываются на сервере. Изменения в тексте поля редактирования, выбора опции в списке, нажатие на флажок или переключатель не вызывают немедленной отправки на сервер. Этого можно добиться, если установить свойство AutoPostBack для этих элементов. Если AutoPostBack установлен для элемента управления TextBox, то для него будет вызываться событие TextChanged, как только поле потеряет фокус или будет нажата клавиша Enter. Чтобы это свойство работало, браузер должен поддерживать ECMAScript (стандарт JavaScript, принятый Европейской ассоциацией производителей компьютеров). Источником данных для элементов управления могут служить таблицы данных. Давайте разберем пример, входящий в состав Visual Studio — CarSelectorSample. Действие происходит в электронном магазине автомобилей. Имеются разные марки машин, причем для каждой марки имеются несколько моделей. При выборе марки машины в первом списке во второй список автоматически грузятся соответствующие модели:
Brand Buick Chevrolet Pontiac Toyota Mileage Features
            Power seat
Buick Century Impala Grand Am Avalon 0-10000 Leather seat
Chevrolet LeSabre Malibu Grand Prix Camry 10000-20000 Sun roof
Pontiac Park Avenue Metro Montana Camry Solara 20000-30000 CD player
Toyota Regal Prizm Sunfire Celica 30000 and more ABS

Все данные, используемые на этой странице, собраны в таблицу. Для хранения такой таблицы существует класс DataTable. Таблица состоит из столбцов — DataColumn и строк DataRow. Класс DataView позволяет создавать различные представления данных таблицы. Первый столбец служит источником данных списка марок. В зависимости от выбранной модели, в список моделей загружается одна из 2-5 колонок.

Вначале создается таблица:

Cars = new DataTable(); Cars.Columns.Add(new DataColumn(" Brand", typeof(string)));

Здесь вызывается один из конструкторов DataColumn. Первый аргумент — название колонки, второй — тип:

CarRow = Cars.NewRow();

Создается новая строка таблицы. Ячейка таблицы задается с помощью индекса строки:

CarRow[6]= " Power seat";

И строка добавляется в таблицу:

Cars.Rows.Add(CarRow);

У выпадающего списка марок установлено свойство AutoPostBack. Это значит, что страница автоматически подается на сервер, когда в этом списке меняется выбранный элемент.

В обработчике выбора нового элемента вначале выясняется, какой элемент выбран:

string selected = DropDownList1.SelectedItem.Value;

В операторе switch происходит переключение второго списка на один из столбцов таблицы заданием свойств DataTextField и DataValueField, где DataTextField — текст, отображаемый в списке, а DataValueField — выбранное значение. В данном случае, как часто бывает, они одинаковы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.