Book Excerpt: Working with the DataList Control
In this chapter, we will cover the ASP.NET DataList control. We will learn about
the following:
|
|
This chapter excerpt from
ASP.NET Data Presentation Controls Essentials by Joydip Kanjilal,
is printed with permission from Packt Publishing,
Copyright 2007.
Displaying Data
The DataList control contains a template that is used to display the data items
within the control. Since there are no data columns associated with this
control, you use templates to display data. Every column in a DataList control
is rendered as a <span> element.
A DataList control is useless without templates. Let us now lern what templates
are, the types of templates, and how to work with them. A template is a
combination of HTML elements, controls, and embedded server controls, and can
be used to customize and manipulate the layout of a control. A template
comprises HTML tags and controls that can be used to customize the look and
feel of controls like Repeater, DataGrid, or DataList. There are seven
templates and seven styles in all. You can use templates for the DataList
control in the same way you did when using the Repeater control. The following
is the list of templates and their associated styles in the DataList control.
|
The Templates are as follows:
1. ItemTemplate
2. AlternatingItemTemplate
3. EditItemTemplate
4. FooterTemplate
5. HeaderTemplate
6. SelectedItemTemplate
7. SeparatorTemplate
The following screenshot illustrates the different templates of this control.

As you can see from this fi gure, the templates are grouped under three broad
categories. These are:
1. I tem Templates
1. Header and Footer Templates
2. Separator Template
Note that out of the templates given above, the ItemTemplate is the one and only
mandatory template that you have to use when working with a DataList control.
Here is a sample of how your DataList control's templates are arranged:
<asp:DataList id="dlEmployee" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<AlternatingItemTemplate>
...
< /AlternatingItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:DataList>
The following screenshot displays a DataList control populated with data and
with its templates indicated.

Customizing a DataList control at run time
You can customize the DataList control at run time using the ListItemType
property in the ItemCreated event of this control as follows:
private void DataList1_ItemCreated(object sender,
...........System.Web.UI.WebControls.
{
switch (e.Item.ItemType)
{
case System.Web.UI.WebControls.ListItemType.Item :
e.Item.BackColor = Color.Red;
break;
case System.Web.UI.WebControls.ListItemType. AlternatingItem :
e.Item.BackColor = Color.Blue;
break;
case
System.Web.UI.WebControls.ListItemType. SelectedItem :
e.Item.BackColor = Color.Green;
break;
default
:
break;
}
}
The Styles that you can use with the DataList control to customize the look and
feel are:
1. AlternatingItemStyle
2. EditItemStyle
3. FooterStyle
4. HeaderStyle
5. ItemStyle
6. SelectedItemStyle
7. SeparatorStyle
You can use any of these styles to format the control, that is, format the HTML
code that is rendered.
You can also use layouts of the DataList control for formatting, that is,
further customization of your user interface. The available layouts are as
follows:
FlowLayout
TableLayout
VerticalLayout
HorizontalLayout
You can specify your desired fl ow or table format at design time by specifying
the following in the .aspx file.
RepeatLayout = "Flow"
You can also do the same at run time by specifying your desired layout using the
RepeatLayout property of the DataList control as shown in the following code
snippet:
DataList1.RepeatLayout = RepeatLayout.Flow
In the code snippet, it is assumed that the name of the DataList control is
DataList1.
Let us now understand how we can display data using the DataList control. For
this, we would fi rst drag and drop a DataList control in our web form and
specify the templates for displaying data. The code in the .aspx fi le is as
follows:
<asp:DataList ID="DataList1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<th>
Employee Code
</th>
<th>
Employee Name
</th>
<th>
Basic
</th>
<th>
Dept
Code
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor="#0xbbbb">
<td>
<%# DataBinder.Eval(Container.DataItem, "EmpCode")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "EmpName")%>
</td>
<td>
<%#
DataBinder.Eval(Container.DataItem, "Basic")%>
</td>
<td>
<%#
DataBinder.Eval(Container.DataItem, "DeptCode")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:DataList>
The DataList control is populated with data in the Page_Load event of the web
form using the DataManager class as usual.
protected void Page_Load(object sender, EventArgs e)
{
DataManager
dataManager = new
DataManager();
DataList1.DataSource = dataManager.GetEmployees();
DataList1.DataBind();
}
Note that the DataBinder.Eval() method has been used as usual to display the
values of the corresponding fi elds from the data container in the DataList
control. The data container in our case is the DataSet instance that is
returned by the GetEmployees () method of the DataManager class.
When you execute the application, the output is as follows:

|