ASP.NET Tutorial/Data Binding/DataList
A DataList control that contains a template that includes two DataBinding expressions.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show DataList</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList
id="DataList1"
DataSourceId="srcProducts"
Runat="server">
<ItemTemplate>
<b>Product Title:</b>
<%#Eval("Title")%>
<br />
<b>Date Released:</b>
<%#Eval("DateReleased", "{0:D}") %>
<hr />
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource
id="srcProducts"
ConnectionString="Data Source=.\SQLExpress;
AttachDbFilename=|DataDirectory|MyDatabase.mdf;
Integrated Security=True;User Instance=True"
SelectCommand="SELECT Title,Director,DateReleased FROM Products"
Runat="server" />
</div>
</form>
</body>
</html>
Get an flexible and feature-rich UI using the DataList control
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DataList in action</title>
</head>
<body>
<div id="pageContent">
<form id="form1" runat="server">
<asp:DropDownList ID="Countries" runat="server"
AutoPostBack="true"
AppendDataBoundItems="True"
OnSelectedIndexChanged="Countries_SelectedIndexChanged">
<asp:ListItem>[No country]</asp:ListItem>
</asp:DropDownList>
<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" GridLines="Both">
<FooterStyle Font-Bold="true" ForeColor="blue" />
<HeaderTemplate>
<h2>We have customers in the following cities</h2>
</HeaderTemplate>
<ItemTemplate>
<%# Eval("City") %> <b><%# Eval("Country")%></b>
</ItemTemplate>
<FooterTemplate>
<%# CalcTotal() %> cities
</FooterTemplate>
</asp:DataList>
</form>
</div>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default : System.Web.UI.Page
{
DataTable data;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillCountries();
}
}
protected void FillCountries()
{
string connString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
string cmdText = "SELECT DISTINCT country FROM customers;";
data = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connString);
adapter.Fill(data);
Countries.DataSource = data;
Countries.DataTextField = "country";
Countries.DataBind();
}
protected int CalcTotal()
{
return data.Rows.Count;
}
protected void Countries_SelectedIndexChanged(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
string cmdText = "SELECT DISTINCT country, city FROM customers WHERE country=@TheCountry";
data = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connString);
adapter.SelectCommand.Parameters.AddWithValue("@TheCountry", Countries.SelectedValue);
adapter.Fill(data);
DataList1.DataSource = data;
DataList1.DataBind();
}
}
Nested data bind sample
<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Nested data bind sample</h2>
<asp:DataList ID="_outerDataList" runat="server"
DataSourceID="_bookstoreDataSource">
<ItemTemplate>
Title: <%# Eval("Title") %><br />
<asp:DataList runat="server" ID="_nestedDastaList"
DataSource="<%# XPathSelect("chapter") %>">
<ItemTemplate>
<h4>Chapternum: <%# XPath("@num") %></h4>
<h4>Chapter name: <%# XPath("@name") %></h4>
<%# XPath(".") %>
<br />
</ItemTemplate>
</asp:DataList>
<br />
</ItemTemplate>
</asp:DataList>
<asp:XmlDataSource ID="_bookstoreDataSource"
runat="server" DataFile="~/App_Data/Data.xml"
XPath="/Data/genre/book" />
</div>
</form>
</body>
</html>
File: Data.xml
<Data>
<genre name="Business">
<book ISBN="1" Title="Database" Price="19.99">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
<book ISBN="2" Title="Computer" Price="2.99">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
<book ISBN="3" Title="VB" Price="19.99">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>