Ватсон Карли
Шрифт:
Рассмотрим это на примере. Используем для него запрос существующих данных в
PCSWebApp3
. Пример
Расширим таблицу вверху страницы, чтобы она содержала
DataList
, выводящий каждое из мероприятий, хранящихся в базе данных. Мы сделаем эти мероприятия выбираемыми, чтобы данные любого мероприятия можно было вывести, щелкая на его имени. Изменения в коде в PCSWebApp3
показаны ниже: <tr>
<td align=middle colSpan=3>
<asp:validationsummary id=validationSummary Runat="server" headertext="Before submitting your request:" />
</td>
</tr>
<tr>
<td align-left colSpan=3 width="100%">
<table cellspacing=4>
<tr>
<td width="40%" bgcolor="#ccffcc" >
<asp:DataList Runat="server"
ID="eventDetails2"
OnSelectedIndexChanged="eventDetails2_SelectedIndexChanged" >
<ItemTemplate>
<asp:LinkButton Runat="server" CommandName="Select"
forecolor="#0000ff" ID="Linkbutton1">
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</asp:LinkButton>
<br>
</ItemTemplate>
<SelectedItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem, "Name") %></b>
<br>
</SelectedItemTemplate>
</asp:DataList>
</td>
<td valign="top">
<asp:Label Runat="server" ID="edName"
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;