ASP.NET - The DataList Control
The DataList control is, like the Repeater control, used to display a repeated list of items that are bound to the control. However, the DataList control adds a table around the data items by default.
Bind a DataSet to a DataList Control
The DataList control is, like the Repeater control, used to display a repeated list of items that are bound to the control. However, the DataList control adds a table around the data items by default. The DataList control may be bound to a database table, an XML file, or another list of items. Here we will show how to bind an XML file to a DataList control.
We will use the following XML file in our examples ("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>  |   
Take a look at the 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 an .aspx page:
   <%@ Import Namespace="System.Data" %>  |   
Next, create a DataSet for the XML file and load the XML file into the DataSet when the page is first loaded:
   <script runat="server"> 
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 DataList in an .aspx page. The contents of the <HeaderTemplate> element are rendered first and only once within the output, then the contents of the <ItemTemplate> element are repeated for each "record" in the DataSet, and last, the contents of the <FooterTemplate> element are rendered once within the output:
   <html> 
<body> 
 
<form runat="server">    
<asp:DataList id="cdcatalog" runat="server"> 
 
<HeaderTemplate>    
... 
</HeaderTemplate> 
 
<ItemTemplate>    
... 
</ItemTemplate> 
 
<FooterTemplate>    
... 
</FooterTemplate> 
 
</asp:DataList>    
</form> 
 
</body>    
</html>  |   
Then we add the script that creates the DataSet and binds the mycdcatalog DataSet to the DataList control. We also fill the DataList control with a <HeaderTemplate> that contains the header of the table, an <ItemTemplate> that contains the data items to display, and a <FooterTemplate> that contains a text. Note that the gridlines attribute of the DataList is set to "both" to display table borders:
   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> 
 
<html>      
<body> 
 
<form runat="server">      
<asp:DataList id="cdcatalog" 
gridlines="both" runat="server"> 
 
<HeaderTemplate>      
My CD Catalog 
</HeaderTemplate> 
 
<ItemTemplate>      
"<%#Container.DataItem("title")%>" of 
<%#Container.DataItem("artist")%> - 
$<%#Container.DataItem("price")%> 
</ItemTemplate> 
 
<FooterTemplate>      
Copyright Hege Refsnes 
</FooterTemplate> 
 
</asp:DataList>      
</form> 
 
</body>      
</html>   |      
  |   
Using Styles
You can also add styles to the DataList control to make the output more fancy:
   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> 
 
<html>      
<body> 
 
<form runat="server">      
<asp:DataList id="cdcatalog" 
runat="server" 
cellpadding="2" 
cellspacing="2" 
borderstyle="inset" 
backcolor="#e8e8e8" 
width="100%" 
headerstyle-font-name="Verdana" 
headerstyle-font-size="12pt" 
headerstyle-horizontalalign="center" 
headerstyle-font-bold="true" 
itemstyle-backcolor="#778899" 
itemstyle-forecolor="#ffffff" 
footerstyle-font-size="9pt" 
footerstyle-font-italic="true"> 
 
<HeaderTemplate>      
My CD Catalog 
</HeaderTemplate> 
 
<ItemTemplate>      
"<%#Container.DataItem("title")%>" of 
<%#Container.DataItem("artist")%> - 
$<%#Container.DataItem("price")%> 
</ItemTemplate> 
 
<FooterTemplate>      
Copyright Hege Refsnes 
</FooterTemplate> 
 
</asp:DataList>      
</form> 
 
</body>      
</html>   |      
  |   
Using the <AlternatingItemTemplate>
You can add an <AlternatingItemTemplate> element after the <ItemTemplate> element to describe the appearance of alternating rows of output. You may style the data in the <AlternatingItemTemplate> section within the DataList control:
   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> 
 
<html>      
<body> 
 
<form runat="server">      
<asp:DataList id="cdcatalog" 
runat="server" 
cellpadding="2" 
cellspacing="2" 
borderstyle="inset" 
backcolor="#e8e8e8" 
width="100%" 
headerstyle-font-name="Verdana" 
headerstyle-font-size="12pt" 
headerstyle-horizontalalign="center" 
headerstyle-font-bold="True" 
itemstyle-backcolor="#778899" 
itemstyle-forecolor="#ffffff" 
alternatingitemstyle-backcolor="#e8e8e8" 
alternatingitemstyle-forecolor="#000000" 
footerstyle-font-size="9pt" 
footerstyle-font-italic="True"> 
 
<HeaderTemplate>      
My CD Catalog 
</HeaderTemplate> 
 
<ItemTemplate>      
"<%#Container.DataItem("title")%>" of 
<%#Container.DataItem("artist")%> - 
$<%#Container.DataItem("price")%> 
</ItemTemplate> 
 
<AlternatingItemTemplate>      
"<%#Container.DataItem("title")%>" of 
<%#Container.DataItem("artist")%> - 
$<%#Container.DataItem("price")%> 
</AlternatingItemTemplate> 
 
<FooterTemplate>      
© Hege Refsnes 
</FooterTemplate> 
 
</asp:DataList>      
</form> 
 
</body>      
</html>   
  
  
 
 
 
  |      
  |   
 
 
Comments