Repeater 控件用于显示被绑定在该控件上的项目的重复列表。
Repeater 控件用于显示被绑定在该控件上的项目的重复列表。Repeater 控件可被绑定到数据库表、XML 文件或者其他项目列表。在这里,我们将演示如何绑定 XML 文件到 Repeater 控件。
在我们的实例中,我们将使用下面的 XML 文件("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> |
<catalog> |
<cd> |
<title>Empire Burlesque</title> |
<artist>Bob Dylan</artist> |
<country>USA</country> |
<company>Columbia</company> |
<price>10.90</price> |
<year>1985</year> |
</cd> |
<cd> |
<title>Hide your heart</title> |
<artist>Bonnie Tyler</artist> |
<country>UK</country> |
<company>CBS Records</company> |
<price>9.90</price> |
<year>1988</year> |
</cd> |
<cd> |
<title>Greatest Hits</title> |
<artist>Dolly Parton</artist> |
<country>USA</country> |
<company>RCA</company> |
<price>9.90</price> |
<year>1982</year> |
</cd> |
<cd> |
<title>Still got the blues</title> |
<artist>Gary Moore</artist> |
<country>UK</country> |
<company>Virgin records</company> |
<price>10.20</price> |
<year>1990</year> |
</cd> |
<cd> |
<title>Eros</title> |
<artist>Eros Ramazzotti</artist> |
<country>EU</country> |
<company>BMG</company> |
<price>9.90</price> |
<year>1997</year> |
</cd> |
</catalog> |
查看这个 XML 文件:cdcatalog.xml
首先,导入 "System.Data" 命名空间。我们需要该命名空间与 DataSet 对象一起工作。 把下面这条指令包含在 .aspx 页面的顶部:
<%@ Import Namespace="System.Data" %> |
<script runat="server"> |
sub Page_Load |
if Not Page.IsPostBack then |
dim mycdcatalog=New DataSet |
mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) |
end if |
end sub |
<html> |
<body> |
<form runat="server"> |
<asp:Repeater id="cdcatalog" runat="server"> |
<HeaderTemplate> |
... |
</HeaderTemplate> |
<ItemTemplate> |
... |
</ItemTemplate> |
<FooterTemplate> |
... |
</FooterTemplate> |
</asp:Repeater> |
</form> |
</body> |
</html> |
<%@ Import Namespace="System.Data" %> |
<script runat="server"> |
sub Page_Load |
if Not Page.IsPostBack then |
dim mycdcatalog=New DataSet |
mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) |
cdcatalog.DataSource=mycdcatalog |
cdcatalog.DataBind() |
end if |
end sub |
</script> |
<html> |
<body> |
<form runat="server"> |
<asp:Repeater id="cdcatalog" runat="server"> |
<HeaderTemplate> |
<table border="1" width="100%"> |
<tr> |
<th>Title</th> |
<th>Artist</th> |
<th>Country</th> |
<th>Company</th> |
<th>Price</th> |
<th>Year</th> |
</tr> |
</HeaderTemplate> |
<ItemTemplate> |
<tr> |
<td><%#Container.DataItem("title")%></td> |
<td><%#Container.DataItem("artist")%></td> |
<td><%#Container.DataItem("country")%></td> |
<td><%#Container.DataItem("company")%></td> |
<td><%#Container.DataItem("price")%></td> |
<td><%#Container.DataItem("year")%></td> |
</tr> |
</ItemTemplate> |
<FooterTemplate> |
</table> |
</FooterTemplate> |
</asp:Repeater> |
</form> |
</body> |
</html> |
您可以在 <ItemTemplate> 元素后添加 <AlternatingItemTemplate> 元素,用来描述输出中交替行的外观。在下面的实例中,表格每隔一行就会显示为浅灰色的背景:
<%@ Import Namespace="System.Data" %> |
<script runat="server"> |
sub Page_Load |
if Not Page.IsPostBack then |
dim mycdcatalog=New DataSet |
mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) |
cdcatalog.DataSource=mycdcatalog |
cdcatalog.DataBind() |
end if |
end sub |
</script> |
<html> |
<body> |
<form runat="server"> |
<asp:Repeater id="cdcatalog" runat="server"> |
<HeaderTemplate> |
<table border="1" width="100%"> |
<tr> |
<th>Title</th> |
<th>Artist</th> |
<th>Country</th> |
<th>Company</th> |
<th>Price</th> |
<th>Year</th> |
</tr> |
</HeaderTemplate> |
<ItemTemplate> |
<tr> |
<td><%#Container.DataItem("title")%></td> |
<td><%#Container.DataItem("artist")%></td> |
<td><%#Container.DataItem("country")%></td> |
<td><%#Container.DataItem("company")%></td> |
<td><%#Container.DataItem("price")%></td> |
<td><%#Container.DataItem("year")%></td> |
</tr> |
</ItemTemplate> |
<AlternatingItemTemplate> |
<tr bgcolor="#e8e8e8"> |
<td><%#Container.DataItem("title")%></td> |
<td><%#Container.DataItem("artist")%></td> |
<td><%#Container.DataItem("country")%></td> |
<td><%#Container.DataItem("company")%></td> |
<td><%#Container.DataItem("price")%></td> |
<td><%#Container.DataItem("year")%></td> |
</tr> |
</AlternatingItemTemplate> |
<FooterTemplate> |
</table> |
</FooterTemplate> |
</asp:Repeater> |
</form> |
</body> |
</html> |
<SeparatorTemplate> 元素用于描述每个记录之间的分隔符。在下面的实例中,每个表格行之间插入了一条水平线:
<%@ Import Namespace="System.Data" %> |
<script runat="server"> |
sub Page_Load |
if Not Page.IsPostBack then |
dim mycdcatalog=New DataSet |
mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) |
cdcatalog.DataSource=mycdcatalog |
cdcatalog.DataBind() |
end if |
end sub |
</script> |
<html> |
<body> |
<form runat="server"> |
<asp:Repeater id="cdcatalog" runat="server"> |
<HeaderTemplate> |
<table border="0" width="100%"> |
<tr> |
<th>Title</th> |
<th>Artist</th> |
<th>Country</th> |
<th>Company</th> |
<th>Price</th> |
<th>Year</th> |
</tr> |
</HeaderTemplate> |
<ItemTemplate> |
<tr> |
<td><%#Container.DataItem("title")%></td> |
<td><%#Container.DataItem("artist")%></td> |
<td><%#Container.DataItem("country")%></td> |
<td><%#Container.DataItem("company")%></td> |
<td><%#Container.DataItem("price")%></td> |
<td><%#Container.DataItem("year")%></td> |
</tr> |
</ItemTemplate> |
<SeparatorTemplate> |
<tr> |
<td colspan="6"><hr /></td> |
</tr> |
</SeparatorTemplate> |
<FooterTemplate> |
</table> |
</FooterTemplate> |
</asp:Repeater> |
</form> |
</body> |
</html> |