Web Forms Repeater
The Repeater control is used to display a repeating list of items bound to the control.
Bind DataSet to Repeater control
The Repeater control is used to display a repeating list of items bound to the control. Repeater controls can be bound to database tables, XML files, or other lists of items. Here we will demonstrate how to bind an XML file to a Repeater control.
In our example, we will use the following XML file ("cdcatalog.xml"):
<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>
View this XML file: cdcatalog.xml
First, import the "System.Data" namespace. We need this namespace to work with DataSet objects. Include the following directive at the top of the .aspx page:
Next, for XML File creates a DataSet and loads this XML file into the DataSet when the page is first loaded:
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
Then we create a Repeater control in the .aspx page. The content in the <HeaderTemplate> element is rendered first and appears only once in the output, while the content in the <ItemTemplate> element is repeated for each "record" in the DataSet, and finally, the content in the <FooterTemplate> element The content of appears only once in the output:
<body>
<form runat="server">
< asp:Repeater id="cdcatalog" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
Then we add the script to create the DataSet and bind the mycdcatalog DataSet to Repeater control. Then Use HTML tags to populate the Repeater control and bind data items to cells within the <ItemTemplate> range via <%#Container.DataItem("fieldname")%>:
Example
<%@ 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> <!DOCTYPE html> <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>Company</th> <th>Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Run instance»
Click the "Run instance" button to view the online instance
Use< AlternatingItemTemplate>
You can add an <AlternatingItemTemplate> element after an <ItemTemplate> element to describe the appearance of alternating rows in the output. In the following example, every other row of the table is displayed with a light gray background:
Example
<%@ 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> <!DOCTYPE html> <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>Company</th> <th>Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Run Example»
Click the "Run Instance" button to view the online instance
Using the <SeparatorTemplate>
<SeparatorTemplate> element is used to describe the separator between each record. In the following example, a horizontal line is inserted between each table row:
Example
<%@ 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> <!DOCTYPE html> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="0" width="100%"> <tr> <th align="left">Title</th> <th align="left">Artist</th> <th align="left">Company</th> <th align="left">Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <SeparatorTemplate> <tr> <td colspan="6"><hr></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Run Example»
Click the "Run Instance" button to view the online instance