Программирование >>  Программирование с использованием ajax 

1 ... 212 213 214 [ 215 ] 216 217 218 ... 396


торой необходимо поместить один и тот же элемент управления, пользовательский элемент управления реализуется только один раз, а используется несколько раз.

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

Пользовательский элемент управления определяется посредством директивы Control в первой строке файла исходного кода. Атрибуты CodeFile и Inherits используются точно так же, как и директива Page:

<%@ Control Language= C# AutoEventWireup= true

CodeFile= DemoUserControl.ascx.cs Inherits= DemoUserControl %>

3a директивой Control следует обычный HTML-код, являющийся частью формы. Дескрипторы <HTML> и <FORM> не используются внутри пользовательского элемента управления, поскольку HTML-код пользовательского элемента управления внедряется в HTML-форму. Пользовательский элемент управления может быть добавлен на страницу статическим образом, как показано в следующем примере ASPX-кода. На него есть ссылка в директиве Register. Атрибут Src ссылается на ASCX-файл пользовательского элемента управления, который в этом примере имеет имя DemoUserControl. ascx. Атрибуты TagPref ix и TagName определяют имена элемента управления, который используется внутри страницы. TagPref ix имеет значение ucl, а TagName - DemoUserControl. Вот почему ссылка на сам элемент управления внутри страницы обеспечивается посредством <ис1: DemoUserControl>. Вы можете сравнить префикс ucl с префиксом asp, который используется в серверных элементах управления ASRNET.

<%@ Page Language= C# AutoEventWireup= true CodeFile= DemoPage.aspx.cs

Inherits= DemoPage %> <%@ Register tagprefix= ucl tagname= DemoUserControl

src=/img-2/ DemoUserControl.ascx %> <html xmlns= http: www.w3.org/1999/xhtml >

<ucl:DemoUserControl ID= DemoUserControl1 runat= server />

Вместо того чтобы объявлять пользовательский элемент управления статическим образом, его можно загружать динамически. Чтобы реализовать динамический пользовательский элемент управления, необходимо поместить на страницу элемент управления PlaceHolder. Пользовательские элементы управления можно добавлять в коллекции Controls заполнителя. Показанный обработчик события PageLoad демонстрирует загрузку пользовательского элемента управления DemoUserControl. ascx методом LoadControl класса Page. Возвращенный пользовательский элемент управления добавляется в коллекцию Controls элемента управления PlaceHolder под именем PlaceHolder 1. Используя такой прием, можно загружать разные пользовательские элементы управления с учетом пользовательских настроек, беря за основу строку URL или отправленные данные:

void Page Load(object sender, EventArgs e) {

Control cl = LoadControl( DemoUserControl.ascx ) ; PlaceHolderl.Controls.Add(cl);

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



Создание пользовательского элемента управления

1. Откройте ранее созданный Webч:aйт EventRegistrationWeb.

2. Добавьте новый пользовательский элемент управления, выбрав пункт меню Website=>Add New Item (Web-caйт=>Добавить новый элемент); выберите шаблон Web User Control (Пользовательский элемент управления) и назовите его ListEvents.ascx.

3. Добавьте в пользовательский элемент управления таблицу с двумя строками и одним столбцом.

4. С помощью конструктора добавьте элемент управления Calendar и раскрывающийся список в пользовательский элемент управления, как показано на рис. 20.7. Присвойте календарю имя EventCalendar, а списку - DropDownListCountries.

5. Присвойте свойству AutoPostback раскрывающегося списка значение true.

6. Откройте файл исходного кода пользовательского элемента управления ListEvents . ascx. cs. Добавьте общедоступный метод Configure (), показанный ниже, чтобы инициализировать элементы пользовательского элемента управления. Общедоступные методы и свойства можно вызывать из Web-страниц через элементы управления.

public void Configure(DateTime date, params string[] countries) {

DropDownListCountries.Items.Clear();

EventCalendar.SelectedDate = date;

Listltem[] items = new Listltem[countries.Length] ;

for (int i = 0; i < countries.Length; i++)

items[i] = new Listltem(countries [i]);

DropDownListCountries.Items.AddRange(items);

Sum Мои Тш

30 31

6 -

13 14

:o 21

2- 28

? A

1 Unbound

:i Devon ; a Spirt S SoiDCe

Рис. 20.7. Добавлени£ элементов управления



Практическое занятнв] Работа С пользовательским

элементом управления

1. Создайте новую Web-страницу по имени UseMyControl. aspx.

2. Откройте Web-страницу в окне Design View. Перетащите пользовательский элемент управления из окна Solution Explorer на поверхность проектирования. Содержимое пользовательского элемента управления без промедления будет показано в окне проектирования. Если щелкнуть на коде ASPX, вы сможете увидеть добавленную директиву Register и пользовательский элемент управления.

3. Откройте исходный код и добавьте код инициализации для пользовательского элемента управления, вызвав созданный ранее общедоступный метод:

protected void Page Load(object sender, EventArgs e) {

if (!Page.IsPostBack) {

ListEventsl.Configure(DateTime.Today, Italy ,

France , Germany , Spain );

4. Запустите Web-страницу. В календаре будет выделена текущая дата, а в раскрывающемся списке будет указан список доступных названий стран.

Профили

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

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

□ Профили хранятся постоянно. Управлением хранимых данных занимается поставщик профиля. В версии ASP.NET 3.5 поддерживаются поставщики профилей для SQL Server и Access. Более того, можно самостоятельно разрабатывать специальные поставщики профилей.

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

□ Профили могут использоваться как для анонимных, так и для зарегистрированных пользователей. Идентификационнг1я информация анонимного пользователя может храниться в cookie-наборе. По мере того как пользователь будет регистрироваться на Web-сайте, состояние от анонимного пользователя может быть преобразовано в состояние зарегистрированного пользователя.

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



1 ... 212 213 214 [ 215 ] 216 217 218 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика