Get an flexible and feature-rich UI using the DataList control : DataList « Data Binding « ASP.NET Tutorial






<%@ 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") %> &nbsp;&nbsp;<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();
    }
}








19.9.DataList
19.9.1.A DataList control that contains a template that includes two DataBinding expressions.
19.9.2.Nested data bind sample
19.9.3.Get an flexible and feature-rich UI using the DataList control