AlternatingItemTemplate類似于 ItemTemplate 元素
通過使用模板顯示數(shù)據(jù)源中的項(xiàng)。通過操作組成 DataList 控件的不同組件的模板(如 ItemTemplate 和 HeaderTemplate),可以自定義該控件的外觀和內(nèi)容。
<asp:DataList id="DataList1"
CellPadding="pixels"
CellSpacing="pixels"
DataKeyField="DataSourceKeyField"
DataSource='<% databindingexpression %>'
ExtractTemplateRows="True|False"
GridLines="None|Horizontal|Vertical|Both"
RepeatColumns="ColumnCount"
RepeatDirection="Vertical|Horizontal"
RepeatLayout="Flow|Table"
ShowFooter="True|False"
ShowHeader="True|False"
OnCancelCommand="OnCancelCommandMethod"
OnDeleteCommand="OnDeleteCommandMethod"
OnEditCommand="OnEditCommandMethod"
OnItemCommand="OnItemCommandMethod"
OnItemCreated="OnItemCreatedMethod"
OnUpdateCommand="OnUpdateCommandMethod"
runat="server">
<AlternatingItemStyle ForeColor="Blue"/>
<EditItemStyle BackColor="Yellow"/>
<FooterStyle BorderColor="Gray"/>
<HeaderStyle BorderColor="Gray"/>
<ItemStyle Font-Bold="True"/>
<PagerStyle Font-Name="Ariel"/>
<SelectedItemStyle BackColor="Blue"/>
<HeaderTemplate>
Header template HTML
</HeaderTemplate>
<ItemTemplate>
Item template HTML
</ItemTemplate>
<AlternatingItemTemplate>
Alternating item template HTML
</AlternatingItemTemplate>
<EditItemTemplate>
Edited item template HTML
</EditItemTemplate>
<SelectedItemTemplate>
Selected item template HTML
</SelectedItemTemplate>
<SeparatorTemplate>
Separator template HTML
</SeparatorTemplate>
<FooterTemplate>
Footer template HTML
</FooterTemplate>
</asp:DataList>
備注
通過定義模板,可以操作控件的布局和內(nèi)容。下表列出 DataList 控件的不同模板。
AlternatingItemTemplate 類似于 ItemTemplate 元素,但在 DataList 控件中隔行(交替行)呈現(xiàn)。通過設(shè)置 AlternatingItemTemplate 元素的樣式屬性,可以為其指定不同的外觀。
EditItemTemplate 項(xiàng)在設(shè)置為編輯模式后的布局。此模板通常包含編輯控件(如 TextBox 控件)。當(dāng) EditItemIndex 設(shè)置為 DataList 控件中某一行的序號(hào)時(shí),將為該行調(diào)用 EditItemTemplate。
FooterTemplate 在 DataList 控件的底部(腳注)呈現(xiàn)的文本和控件。
FooterTemplate 不能是數(shù)據(jù)綁定的。
HeaderTemplate 在 DataList 控件頂部(標(biāo)頭)呈現(xiàn)的文本和控件。
HeaderTemplate 不能是數(shù)據(jù)綁定的。
ItemTemplate 為數(shù)據(jù)源中的每一行都呈現(xiàn)一次的元素。
SelectedItemTemplate 當(dāng)用戶選擇 DataList 控件中的一項(xiàng)時(shí)呈現(xiàn)的元素。通常的用法是增加所顯示的數(shù)據(jù)字段的個(gè)數(shù)并以可視形式突出標(biāo)記該行。
SeparatorTemplate 在各項(xiàng)之間呈現(xiàn)的元素。
SeparatorTemplate 項(xiàng)不能是數(shù)據(jù)綁定的。
通過為 DataList 控件的不同部分指定樣式,可以自定義該控件的外觀。下表列出用于控制 DataList 控件不同部分的外觀的樣式屬性。
樣式屬性 說明 樣式類
AlternatingItemStyle 隔項(xiàng)(交替項(xiàng))的樣式。 TableItemStyle
EditItemStyle 正在編輯的項(xiàng)的樣式。 TableItemStyle
FooterStyle 列表結(jié)尾處的腳注(如果有的話)的樣式。 TableItemStyle
HeaderStyle 列表開始處的標(biāo)頭(如果有的話)的樣式。 TableItemStyle
ItemStyle 單個(gè)項(xiàng)的樣式。 Style
SelectedItemStyle 選定項(xiàng)的樣式。 TableItemStyle
SeparatorStyle 各項(xiàng)之間的分隔符的樣式。 TableItemStyle
注意 DataList 控件與 Repeater 控件的不同之處在于,前者支持定向呈現(xiàn)(通過使用 RepeatColumns 和 RepeatDirection 屬性)并且有用于在 HTML 表內(nèi)呈現(xiàn)的選項(xiàng)。
Items 集合包含 DataList 控件的數(shù)據(jù)綁定成員。當(dāng)在 DataList 控件上調(diào)用 DataBind 方法時(shí)該集合將被填充。首先添加標(biāo)頭(如果有的話),然后為每個(gè)數(shù)據(jù)行添加一個(gè) Item 對(duì)象。如果存在 SeparatorTemplate,則 Separators 將被創(chuàng)建并添加到各項(xiàng)之間,但不會(huì)添加到 Items 集合中。
在為 DataSource 中的行創(chuàng)建所有項(xiàng)之后,F(xiàn)ooter 被添加到該控件中(但不會(huì)添加到 Items 集合中)。最后,該控件為每一項(xiàng)(包括標(biāo)頭、腳注和分隔符)引發(fā) ItemCreated 事件。與大多數(shù)集合不同,Items 集合不公開 Add 或 Remove 方法。但是,可以通過為 ItemCreated 事件提供處理程序來修改項(xiàng)內(nèi)的內(nèi)容。
警告 文本在 DataList 控件中顯示之前并非 HTML 編碼形式。這使得可以在文本中的 HTML 標(biāo)記間嵌入腳本。如果控件值是用戶輸入的,請(qǐng)務(wù)必驗(yàn)證這些值以防止出現(xiàn)安全漏洞。
有關(guān) DataList Web 服務(wù)器控件的屬性和事件的詳細(xì)信息,請(qǐng)參見 DataList 類文檔。
示例
以下示例說明如何使用 DataList 控件顯示數(shù)據(jù)源中的項(xiàng)。
[Visual Basic]
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
Function CreateDataSource() As ICollection
Dim dt As New DataTable()
Dim dr As DataRow
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
Dim i As Integer
For i = 0 To 9
dr = dt.NewRow()
dr(0) = "Item " & i.ToString()
dt.Rows.Add(dr)
Next i
Dim dv As New DataView(dt)
Return dv
End Function 'CreateDataSource
Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
DataList1.DataSource = CreateDataSource()
DataList1.DataBind()
End If
End Sub 'Page_Load
Sub Button1_Click(sender As Object, e As EventArgs)
If DropDown1.SelectedIndex = 0 Then
DataList1.RepeatDirection = RepeatDirection.Horizontal
Else
DataList1.RepeatDirection = RepeatDirection.Vertical
End If
If DropDown2.SelectedIndex = 0 Then
DataList1.RepeatLayout = RepeatLayout.Table
Else
DataList1.RepeatLayout = RepeatLayout.Flow
End If
DataList1.RepeatColumns = DropDown3.SelectedIndex + 1
If Check1.Checked = True And DataList1.RepeatLayout = RepeatLayout.Table Then
DataList1.BorderWidth = Unit.Pixel(1)
DataList1.GridLines = GridLines.Both
Else
DataList1.BorderWidth = Unit.Pixel(0)
DataList1.GridLines = GridLines.None
End If
End Sub 'Button1_Click
</script>
<body>
<form runat="server">
<h3>DataList Example</h3>
<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle>
<HeaderTemplate>
Items
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "StringValue") %>
</ItemTemplate>
</asp:DataList>
<p>
<hr noshade align="left" width="300px">
RepeatDirection:
<asp:DropDownList id=DropDown1 runat="server">
<asp:ListItem>Horizontal</asp:ListItem>
<asp:ListItem>Vertical</asp:ListItem>
</asp:DropDownList><br>
RepeatLayout:
<asp:DropDownList id=DropDown2 runat="server">
<asp:ListItem>Table</asp:ListItem>
<asp:ListItem>Flow</asp:ListItem>
</asp:DropDownList><br>
RepeatColumns:
<asp:DropDownList id=DropDown3 runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
</asp:DropDownList><br>
Show Borders:
<asp:CheckBox id=Check1 runat="server" /><p>
<asp:LinkButton id=Button1
Text="Refresh DataList"
OnClick="Button1_Click"
runat="server"/>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = "Item " + i.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object Sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = CreateDataSource();
DataList1.DataBind();
}
}
void Button1_Click(Object Sender, EventArgs e)
{
if (DropDown1.SelectedIndex == 0)
DataList1.RepeatDirection = RepeatDirection.Horizontal;
else
DataList1.RepeatDirection = RepeatDirection.Vertical;
if (DropDown2.SelectedIndex == 0)
DataList1.RepeatLayout = RepeatLayout.Table;
else
DataList1.RepeatLayout = RepeatLayout.Flow;
DataList1.RepeatColumns=DropDown3.SelectedIndex+1;
if ((Check1.Checked ==true) &&
(DataList1.RepeatLayout == RepeatLayout.Table))
{
DataList1.BorderWidth = Unit.Pixel(1);
DataList1.GridLines = GridLines.Both;
}
else
{
DataList1.BorderWidth = Unit.Pixel(0);
DataList1.GridLines = GridLines.None;
}
}
</script>
<body>
<form runat="server">
<h3>DataList Sample</h3>
<asp:DataList id="DataList1"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
runat="server">
<HeaderStyle BackColor="#aaaadd"/>
<AlternatingItemStyle BackColor="Gainsboro"/>
<HeaderTemplate>
Items
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "StringValue") %>
</ItemTemplate>
</asp:DataList>
<p>
<hr noshade align="left" width="300px">
RepeatDirection:
<asp:DropDownList id=DropDown1 runat="server">
<asp:ListItem>Horizontal</asp:ListItem>
<asp:ListItem>Vertical</asp:ListItem>
</asp:DropDownList><br>
RepeatLayout:
<asp:DropDownList id=DropDown2 runat="server">
<asp:ListItem>Table</asp:ListItem>
<asp:ListItem>Flow</asp:ListItem>
</asp:DropDownList><br>
RepeatColumns:
<asp:DropDownList id=DropDown3 runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
</asp:DropDownList><br>
Show Borders:
<asp:CheckBox id=Check1 runat="server" />
<p>
<asp:LinkButton id=Button1
Text="Refresh DataList"
OnClick="Button1_Click"
runat="server"/>
</font>
</form>
</body>
</html>
請(qǐng)參見
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之六十五:在TableAdapters中創(chuàng)建新的存儲(chǔ)過程
本文主要講解使用TableAdapter設(shè)置向?qū)ё詣?dòng)創(chuàng)建增刪改查的存儲(chǔ)過程,雖然自動(dòng)創(chuàng)建存儲(chǔ)過程可以節(jié)省時(shí)間,但他們會(huì)包含一些無用的參數(shù),下節(jié)我們會(huì)介紹TableAdapter使用現(xiàn)有的存儲(chǔ)過程。2016-05-05
在ASP.NET 2.0中操作數(shù)據(jù)之六十:創(chuàng)建一個(gè)自定義的Database-Driven Site Map Provid
ASP.NET 2.0的site map是建立在provider模式的基礎(chǔ)上的,因此我們可以創(chuàng)建一個(gè)自定義的site map provider,從數(shù)據(jù)庫或某個(gè)層來獲取數(shù)據(jù)。本文就詳解介紹如何自定義的site map provider動(dòng)態(tài)的獲取數(shù)據(jù),替代先前通過"硬編碼"的方式添加到Web.sitemap文件的方法。2016-05-05
在Linux+Jexus中發(fā)布和部署Asp.Net?Core
這篇文章介紹了在Linux+Jexus中發(fā)布和部署Asp.Net?Core,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
在ASP.NET 2.0中操作數(shù)據(jù)之六十二:GridView批量更新數(shù)據(jù)
GridView控件內(nèi)置的編輯功能只能對(duì)每行進(jìn)行編輯,做不到批量編輯。為此,我們需要將GridView里的列轉(zhuǎn)換為TemplateFields,通過一個(gè)單獨(dú)的“Update All”按鈕,在按鈕的事件中批量處理每一行。2016-05-05
在ASP.NET 2.0中操作數(shù)據(jù)之二十二:為刪除數(shù)據(jù)添加客戶端確認(rèn)
本文主要介紹ASP.NET 2.0中利用JavaScript在刪除按鈕的客戶端onclick事件(在ASP.NET中是OnClientClick)中調(diào)用confirm(string)方法,從而顯示一個(gè)確認(rèn)窗口,根據(jù)窗口的返回值執(zhí)行不同的操作。2016-05-05
ASP.NET MVC4入門教程(八):給數(shù)據(jù)模型添加校驗(yàn)器
本文介紹給模型添加校驗(yàn)器,以前我們做表單驗(yàn)證都要前臺(tái)驗(yàn)證一遍,后臺(tái)再驗(yàn)證一遍,MVC4中這種方式,只需在模型上加驗(yàn)證規(guī)則,前后臺(tái)就都驗(yàn)證了。2016-04-04
解讀ASP.NET 5 & MVC6系列教程(6):Middleware詳解
這篇文章主要介紹了Middleware詳解,需要的朋友可以參考下2016-06-06

