Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

Font-Name="Arial" Font-Bold="True"

Font-Italic="True" Font-Size="14"> Select an event to view details. </asp:Label>

<br>

<asp:Label Runat="server" ID="edDate" />

<br>

<asp:Label Runat="server" ID="edRoom" />

<br>

<asp:Label Runat="server" ID="edAttendees" />

</td>

</tr>

</table>

</td>

 </tr>

</table>

Здесь

мы добавили новую строку таблицы, содержащую сведения с
DataList
в одном столбце и представленные данные в другом. Представление данных является просто четырьмя метками для свойств мероприятия, одна из которых содержит текст "Select an event to view details", когда не выбрано никакого мероприятия (ситуация при первой загрузке формы).

DataList
использует
<ItemTemplate>
и
<SelectedItemTemplate>
для вывода данных мероприятия. Чтобы облегчить выбор, мы инициируем команду
Select
внутри
<ItemTemplate>
, что автоматически изменяет выбор. Мы используем также для заполнения данными мероприятия событие
OnSelectedIndexChanged
, которое включается, когда команда
Select
изменяет выбор. Обработчик событий для этого показан ниже (Отметим, что нам нужно сначала выполнить метод
DataBind
для обновления выбора):

protected void eventDetails2_SelectedIndexChanged(object sender, System.EventArgs e) {

 eventDetails2.DataBind;

 DataRow selectedEventRow =

eventTable.Rows[eventDetails2.SelectedIndex];

 edName.Text = (string)selectedEventRow["Name"];

 edDate.Text =

"<b>Date:</b> " +

((DateTime)selectedEventRow["Event Date"]).ToLongDateString;

 edAttendees.Text =

"<b>Attendees:</b> " + (string)selectedEventRow["AttendeeList"];

 DataRow selectedEventRoomRow =

ds.Tables["Rooms"].Rows[(int)selectedEventRow["Room"] -1];

 edRoom.Text = "<b>Room:</b> " + selectedEventRoomRow["Room"];

}

Здесь данные в

ds
и
eventTable
используются для заполнения деталями мероприятия.

Как и в случае

DataGrid
ранее, необходимо в
Page_Load
задать и связать данные для
eventDetails2
:

eventDetails1.DataSource = eventTable;

eventDetails2.DataSource = eventTable;

...

eventDetails1.DataBind;

eventDetails2.DataBind;

И заново связать в

submitButton_Click
:

eventDetails1.DataBind;

eventDetails2.DataBind;

Детали мероприятия представлены

в таблице:

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

Конфигурация приложения

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

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

Приложение определяется как все файлы проекта, оно сконфигурировано с помощью файлов

web.config
. Объект
Application
создается, когда приложение запускается в первый раз, что происходит, когда поступает первый запрос HTTP. В это время также срабатывает событие
Application_Start
, обработчик событий для которого детально описывается в
global.asax
(вместе со всеми другими событиями, обсуждаемыми здесь), и создается пул экземпляров
HttpApplication
. Каждый входящий запрос получает один из этих экземпляров, который выполняет обработку запроса (это означает, что объекты
HttpApplication
не нуждаются в копировании при одновременном доступе, в отличие от глобального объекта
Application
). Когда все экземпляры
HttpApplication
заканчивают свою работу срабатывает событие
Application_End
, и приложение прекращается, разрушая объект
Application
.

Когда отдельный пользователь использует приложение Web, запускается сеанс. Как и в случае приложения, это включает создание специфического для пользователя объекта

Session
вместе с включением события
Session_Start
. В течение сеанса в отдельные запросы могут входить события
Application_BeginRequest
и
Application_EndRequest
. Это повторяется несколько раз за сеанс, когда в приложении происходит доступ к различным ресурсам. Отдельные сеансы могут прекращаться вручную или будут прерываться, если не получают больше никаких запросов. Прекращение сеанса включает событие
Session_End
и разрушение объекта
Session
.

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

PCSWebApp3.mdb
. Это множество записей всегда используется только для считывания данных, так как для добавления мероприятий в базу данных используется другой метод. В таких случаях можно заполнить множество записей в обработчике событий
Application_Start
и сделать его доступным для всех пользователей. Единственный раз, когда понадобиться обновить множество записей, возникнет, если будет добавлено событие. Это существенно повышает производительность, так как в большинстве запросов не будет требоваться доступ к базе данных.

Поделиться:
Популярные книги

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Час Презрения

Сапковский Анджей
4. Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Час Презрения

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

Любимая учительница

Зайцева Мария
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Любимая учительница

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Возвышение Меркурия. Книга 14

Кронос Александр
14. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 14

Тайны ордена

Каменистый Артем
6. Девятый
Фантастика:
боевая фантастика
попаданцы
7.48
рейтинг книги
Тайны ордена

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Шесть принцев для мисс Недотроги

Суббота Светлана
3. Мисс Недотрога
Фантастика:
фэнтези
7.92
рейтинг книги
Шесть принцев для мисс Недотроги

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6