Основы ASP.NET 2.0

DataList


DataList имеет те же черты, что и Repeater, то есть выводит данные согласно шаблонам. Однако это более богатый элемент управления. Во-первых, он поддерживает выбор, редактирование, удаление и вставку. Поэтому список шаблонов пополнился SelectedItemTemplate и EditItemTemplate. Кроме того, у него есть верхний и нижний колонтитулы со стилями HeaderStyle и FooterStyle.

Во-вторых, можно изменить способы отображения. По умолчанию DataList выводит данные поколонно в таблице. Свойство RepeatLayout, установленное как Flow, убирает табличные теги из выходного потока. RepeatDirection меняет направление вывода с вертикального на горизонтальное. RepeatColumns задает количество столбцов таблицы, по умолчанию равное 1.

DataList — наследник абстрактного класса BaseDataList, который наследует WebControl. Поэтому у него, в отличие от Repeater, имеются визуальные свойства. При отображении он представляет собой таблицу, поэтому присутствуют свойства CellPadding и CellSpacing.

У DataList есть шаблон по умолчанию, Visual Studio 2005 и VWD создают его в виде вертикально расположенных меток для каждого поля, а слева от них помещают текст с названием поля. Чтобы войти в режим редактирования шаблона, нужно воспользоваться возможностью SmartTag — Edit Templates. После того, как редактирование окончено, не забудьте выйти из режима — End Template Editing.

Можно спроектировать этот элемент так, чтобы в обычном состоянии отображалась краткая информация, а в выбранном состоянии — более подробная.

Посмотрим пример из Quickstarts:


<asp:DataList id="DataList1" runat="server" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" Font-Names="Verdana" Font-Size="8pt" Width="150px" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="Gainsboro" SelectedItemStyle-BackColor="yellow" OnItemCommand="DataList_ItemCommand" > <HeaderTemplate> Items </HeaderTemplate> <ItemTemplate> <asp:LinkButton id="button1" runat="server" Text="Show details" CommandName="select" /> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> </ItemTemplate> <SelectedItemTemplate> Item: <%# DataBinder.Eval(Container.DataItem, "StringValue") %> <br> Order Date: <%# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") %> <br> Quantity: <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N1}") %> <br> </SelectedItemTemplate> </asp:DataList>

А обработчик выбора записи такой:

void DataList_ItemCommand(object Sender, DataListCommandEventArgs e) { string cmd = ((LinkButton)e.CommandSource).CommandName; if (cmd == "select") DataList1.SelectedIndex = e.Item.ItemIndex; BindList(); }

Чтобы реализовать редактирование, тоже нужно обрабатывать событие. Поэтому в ASP .NET 2.0 DataList лучше применять для показа данных без редактирования, а если редактирование все же требуется — использовать элемент управления FormView.

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


Содержание раздела