Программирование >>  Asp.net 

1 ... 9 10 11 [ 12 ] 13


Для начала нам понадобится создать новые источники данных для привязанных к данным элементов управления. Хорошим тоном (и мы настоятельно рекомендуем его придерживаться) является наличие отдельного источника данных для каждого из таких элементов управления.

Элемент SqlDataSource, необходимый для ListView - MRBEventData2 - в основном похож на MRBEventData за исключением того, что он должен возвращать только данные столбцов Name и ID. Необходимый код представлен ниже:

<asp:SqlDataSource ID= MRBEventData2 runat= server SelectCommand= SELECT [ID], [Name] FROM [Events]

ConnectionString= <%$ ConnectionStrings:MRBConnectionString %> > </asp:SqlDataSource>

Источник данных MRBEventDetailData, используемый для элемента управления FormView, более сложен, хотя его можно построить достаточно легко с помощью мастера конфигурации источника данных. Этот источник данных использует выбранный элемент элемента управления ListView, который мы назовем EventList, чтобы получать данные только этого выбранного элемента. Это делается за счет применения параметра в SQL-запросе:

<asp:SqlDataSource ID= MRBEventDetailData runat= server

SelectCommand= SELECT dbo.Events.Name, dbo.Rooms.Room, dbo.Events.AttendeeList, dbo.Events.EventDate FROM dbo.Events INNER JOIN dbo.Rooms ON dbo.Events.ID = dbo.Rooms.ID WHERE dbo.Events.ID = @ID

ConnectionString= <%$ ConnectionStrings:MRBConnectionString %> > <SelectParameters>

<asp:ControlParameter Name= ID DefaultValue= -1 ControlID= EventList PropertyName= SelectedValue /> </SelectParameters> </asp:SqlDataSource>

Здесь вместо параметра @ID в запросе подставляется значение ID элемента, выбранного в списке. Элемент ControlParameter получает это значение из свойства SelectedValue списка EventList или же использует значение -1, если ни одного элемента не выбрано. На первый взгляд такой синтаксис кажется несколько странным, но он обеспечивает высокую степень гибкости, и если вы воспользуетесь мастером, у вас не возникнет с ним никаких проблем.

Далее нам нужно добавить элементы управления ListView и FormList. Необходимые изменения кода Default.aspx в проекте PCSWebApp3 соответствующим образом выделены: <tr>

<td align= center colspan= 3 >

<asp:ValidationSummary ID= validationSummary runat= server HeaderText= Before submitting your request: />

</td> </tr> <tr>

<td align= left colspan= 3 style= width: 40%; > <table cellspacing= 4 style= width: 100%; >

<tr>

<td colspan= 2 style= text-align: center; > <h2>Event details</h2>

</td> </tr> <tr>

<td style= width: 40%; background-color: #ccffcc; valign= top > <asp:ListView ID= EventList runat= server

DataSourceID= MRBEventData2 DataKeyField= ID



OnSelectedIndexChanged= EventList SelectedIndexChanged > <LayoutTemplate> <ul>

<asp:Placeholder ID= itemPlaceholder runat= server />

<ul>

</LayoutTemplate> <ItemTemplate>

<li>

<asp:LinkButton Text=<%# Bind( Name ) %>

runat= server ID= NameLink CommandName= Select CommandArgument=<%# Bind( ID ) %> CausesValidation= false />

</li> </ItemTemplate> <SelectedItemTemplate>

<li>

<bX%# Eval( Name ) %X/b>

</li>

</SelectedItemTemplate>

</asp:ListView> </td>

<td valign= top >

<asp:FormView ID= FormView1 runat= server DataSourceID= MRBEventDetailData > <ItemTemplate>

<h3X%# Eval( Name ) %X/h3> <b>Date:</b>

<%# Eval( EventDate , {0:D} ) %>

<br />

<b>Room:</b>

<%# Eval( Room ) %>

<br />

<b>Attendees:</b> <%# Eval( AttendeeList ) %> </ItemTemplate> </asp:FormView>

</td> </tr> </table> </td> </tr>

</table>

Здесь мы добавили новую строку таблицы, которая сама содержит таблицу с элементом управления ListView в одном столбце и FormView - в другом.

ListView использует <LayoutTemplate> для вывода списка с буллитами, а также <ItemTemplate> и <SelectedItemTemplate> для отображения подробностей о мероприятии. В <LayoutTemplate> определен контейнерный элемент для элементов посредством элемента управления PlaceHolder, имеющего атрибут ID= itemPlaceHolder . Чтобы облегчить выбор, выполняется команда Select по ссылке-названию мероприятия, отображенного в <ItemTemplate>, что автоматически изменяет выбор. Также возбуждается событие OnSelectedIndexChanged, когда команда Select изменяет выбор, дабы гарантировать, что отображаемый список покажет выбранную строку в другом стиле. Код обработчика события представлен ниже:

protected void EventList SelectedIndexChanged(object sender, EventArgs e)

EventList.DataBind();



Также потребуется обеспечить добавление новых мероприятий в список:

if (queryResult == 1)

resultLabel.Text = Event Added. ; EventData = null; calendar.SelectedDate =

GetFreeDate(calendar.SelectedDate.AddDays(1)); GridView1.DataBind();

EventList.DataBind();

Теперь подробности о запланированных мероприятиях доступны в таблице, как показано на рис. 37.14.


Рис. 37.14. Отображение подробной информации о мероприятии

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

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

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

Приведем несколько заметок по терминологии и времени жизни приложения. Приложение определяется как все файлы проекта и конфигурируется с помощью файла Web.config. Объект Application создается, когда приложение запускается первый раз, что происходит при появлении первого HTTP-запроса. Также в этот момент возбуждается событие Application Start и создается пул экземпляров HttpApplication. Каждый входящий запрос получает один из этих экземпляров для выполнения обработки. Обратите внимание, что это значит, что объекты HttpApplication не обязаны работать с параллельным доступом, в отличие от глобального объекта Application. Когда все экземпляры HttpApplication завершают свою работу, генерируется событие Application End и приложение завершается, уничтожая объект Application.



1 ... 9 10 11 [ 12 ] 13

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