Декларативный синтаксис серверного веб-элемента управления DataList
Обновлен: Ноябрь 2007
Отображает элементы из источника данных с помощью шаблонов. Можно настраивать внешний вид и содержимое элемента управления с помощью управления шаблонами, составляющими различные компоненты элемента управления DataList, например, ItemTemplate и HeaderTemplate.
<asp:DataList
AccessKey="string"
BackColor="color name|#dddddd"
BorderColor="color name|#dddddd"
BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|
Inset|Outset"
BorderWidth="size"
Caption="string"
CaptionAlign="NotSet|Top|Bottom|Left|Right"
CellPadding="integer"
CellSpacing="integer"
CssClass="string"
DataKeyField="string"
DataMember="string"
DataSource="string"
DataSourceID="string"
EditItemIndex="integer"
Enabled="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
ExtractTemplateRows="True|False"
Font-Bold="True|False"
Font-Italic="True|False"
Font-Names="string"
Font-Overline="True|False"
Font-Size="string|Smaller|Larger|XX-Small|X-Small|Small|Medium|
Large|X-Large|XX-Large"
Font-Strikeout="True|False"
Font-Underline="True|False"
ForeColor="color name|#dddddd"
GridLines="None|Horizontal|Vertical|Both"
Height="size"
HorizontalAlign="NotSet|Left|Center|Right|Justify"
ID="string"
OnCancelCommand="CancelCommand event handler"
OnDataBinding="DataBinding event handler"
OnDeleteCommand="DeleteCommand event handler"
OnDisposed="Disposed event handler"
OnEditCommand="EditCommand event handler"
OnInit="Init event handler"
OnItemCommand="ItemCommand event handler"
OnItemCreated="ItemCreated event handler"
OnItemDataBound="ItemDataBound event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnSelectedIndexChanged="SelectedIndexChanged event handler"
OnUnload="Unload event handler"
OnUpdateCommand="UpdateCommand event handler"
RepeatColumns="integer"
RepeatDirection="Horizontal|Vertical"
RepeatLayout="Table|Flow"
runat="server"
SelectedIndex="integer"
ShowFooter="True|False"
ShowHeader="True|False"
SkinID="string"
Style="string"
TabIndex="integer"
ToolTip="string"
UseAccessibleHeader="True|False"
Visible="True|False"
Width="size"
>
<AlternatingItemStyle />
<AlternatingItemTemplate>
<!-- child controls -->
</AlternatingItemTemplate>
<EditItemStyle />
<EditItemTemplate>
<!-- child controls -->
</EditItemTemplate>
<FooterStyle />
<FooterTemplate>
<!-- child controls -->
</FooterTemplate>
<HeaderStyle />
<HeaderTemplate>
<!-- child controls -->
</HeaderTemplate>
<ItemStyle />
<ItemTemplate>
<!-- child controls -->
</ItemTemplate>
<SelectedItemStyle />
<SelectedItemTemplate>
<!-- child controls -->
</SelectedItemTemplate>
<SeparatorStyle />
<SeparatorTemplate>
<!-- child controls -->
</SeparatorTemplate>
</asp:DataList>
Заметки
Определяя шаблоны, можно менять структуру и содержимое элемента управления. В следующей таблице представлен перечень шаблонов элемента управления DataList.
Похож на элемент ItemTemplate, но воспроизводится для каждой второй строки (чередующиеся строки) в элементе управления DataList. Внешний вид элемента AlternatingItemTemplate задается с помощью установки его свойств стилей. |
|
Структура элемента, установленного в режим редактирования. Обычно этот шаблон содержит элементы управления для редактирования, например, TextBox. EditItemTemplate вызывается для строки в элементе управления DataList, когда для EditItemIndex устанавливается порядковый номер этой строки. |
|
Текст, а также элементы управления, воспроизводимые в нижней части (нижнем колонтитуле) элемента управления DataList. Элемент FooterTemplate не может иметь привязки к данным. |
|
Текст, а также элементы управления, воспроизводимые в верхней части (верхнем колонтитуле) элемента управления DataList. Элемент HeaderTemplate не может иметь привязки к данным. |
|
Элементы, воспроизводимые однократно для каждой строки источника данных. |
|
Элементы, отображаемые при выделении пользователем элемента в элементе управления DataList. Обычно используется для увеличения числа отображаемых полей данных и для визуального выделения строки. |
|
Элементы, отображаемые между всеми элементами. Элемент SeparatorTemplate не может иметь привязки к данным. |
Внешний вид элемента управления DataListможно настроить, задав стиль его составных частей. Следующая таблица перечисляет свойства стилей, определяющих внешний вид составных частей элемента управления DataList.
Свойство стиля |
Описание |
Класс стиля |
---|---|---|
Стиль для каждого второго элемента (чередующегося элемента). |
||
Стиль для редактируемого элемента. |
||
Стиль для нижнего колонтитула в конце списка (если он задан). |
||
Стиль для заголовка в начале списка (если он задан). |
||
Стиль для отдельных элементов. |
||
Стиль для выбранного элемента. |
||
Стиль для разделителя элементов. |
Примечание. |
---|
Элемент управления DataList отличается от элемента управления Repeater поддержкой направленного воспроизведения (использованием свойств RepeatColumns и RepeatDirection), а также возможностью воспроизведения в таблице HTML. |
В коллекции Items содержатся элементы элемента управления DataList с привязкой к данным. Заполнение коллекции происходит при вызове метода DataBind для элемента управления DataList. Сначала добавляется заголовок (если он задан), после чего следуют объекты Item по одному для каждой строки данных. Если существует SeparatorTemplate, создаются Separators (разделители), которые вставляются между элементами, но не добавляются в коллекцию Items.
После того, как созданы все элементы для строк в DataSource, в элемент управления (но не в коллекцию Items) добавляется Footer (нижний колонтитул). Наконец, элемент управления инициирует событие ItemCreated для каждого элемента, включая заголовок, нижний колонтитул и разделители. В отличие от большинства коллекций, коллекция Items не предоставляет методы Add или Remove. Однако содержимое в элементе можно изменить с помощью предоставления обработчика событий для события ItemCreated.
Внимание! |
---|
Перед отображением в элементе управления DataList текст не преобразуется в формат HTML. Это дает возможность внедрять в текст сценарии, заключенные в теги HTML. Если значения элемента управления вводятся пользователем, следует проверить их на допустимость, чтобы избежать появления уязвимых мест в системе безопасности. |
Подробные сведения о свойствах и событиях серверного веб-элемента управления DataList см. в документации по классу DataList.
Пример
В следующем примере демонстрируется использование элемента управления DataList для отображения элементов источника данных.
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server">
Function CreateDataSource() As ICollection
' Create sample data for the DataList control.
Dim dt As DataTable = New DataTable()
dim dr As DataRow
' Define the columns of the table.
dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
dt.Columns.Add(New DataColumn("ImageValue", GetType(String)))
' Populate the table with sample values.
Dim i As Integer
For i = 0 To 8
dr = dt.NewRow()
dr(0) = i
dr(1) = "Description for item " & i.ToString()
dr(2) = 1.23 * (i + 1)
dr(3) = "Image" & i.ToString() & ".jpg"
dt.Rows.Add(dr)
Next i
Dim dv As DataView = New DataView(dt)
Return dv
End Function
Sub Page_Load(sender As Object, e As EventArgs)
' Load sample data only once, when the page is first loaded.
If Not IsPostBack Then
ItemsList.DataSource = CreateDataSource()
ItemsList.DataBind()
End If
End Sub
</script>
<head runat="server">
<title>DataList Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataList Example</h3>
<asp:DataList id="ItemsList"
BorderColor="black"
CellPadding="5"
CellSpacing="5"
RepeatDirection="Vertical"
RepeatLayout="Table"
RepeatColumns="3"
runat="server">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle>
<HeaderTemplate>
List of items
</HeaderTemplate>
<ItemTemplate>
Description: <br />
<%# DataBinder.Eval(Container.DataItem, "StringValue") %>
<br />
Price: <%# DataBinder.Eval(Container.DataItem, "CurrencyValue", "{0:c}") %>
<br />
<asp:Image id="ProductImage" AlternateText="Product picture"
ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageValue") %>'
runat="server"/>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<script runat="server">
ICollection CreateDataSource()
{
// Create sample data for the DataList control.
DataTable dt = new DataTable();
DataRow dr;
// Define the columns of the table.
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
dt.Columns.Add(new DataColumn("ImageValue", typeof(String)));
// Populate the table with sample values.
for (int i = 0; i < 9; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "Description for item " + i.ToString();
dr[2] = 1.23 * (i + 1);
dr[3] = "Image" + i.ToString() + ".jpg";
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object sender, EventArgs e)
{
// Load sample data only once, when the page is first loaded.
if (!IsPostBack)
{
ItemsList.DataSource = CreateDataSource();
ItemsList.DataBind();
}
}
</script>
<head runat="server">
<title>DataList Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataList Example</h3>
<asp:DataList id="ItemsList"
BorderColor="black"
CellPadding="5"
CellSpacing="5"
RepeatDirection="Vertical"
RepeatLayout="Table"
RepeatColumns="3"
runat="server">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle>
<HeaderTemplate>
List of items
</HeaderTemplate>
<ItemTemplate>
Description: <br />
<%# DataBinder.Eval(Container.DataItem, "StringValue") %>
<br />
Price: <%# DataBinder.Eval(Container.DataItem, "CurrencyValue", "{0:c}") %>
<br />
<asp:Image id="ProductImage" AlternateText="Product picture"
ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageValue") %>'
runat="server"/>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
См. также
Основные понятия
Серверные элементы управления ASP.NET