ASP.NET Tutorial/Data Binding/DataList

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

A DataList control that contains a template that includes two DataBinding expressions.

   <source lang="csharp">

<%@ 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">
   <asp:DataList
       id="DataList1"
       DataSourceId="srcProducts"
       Runat="server">
       <ItemTemplate>
       Product Title:
       <%#Eval("Title")%>
       
Date Released: <%#Eval("DateReleased", "{0:D}") %>

       </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" />
   </form>

</body> </html></source>


Get an flexible and feature-rich UI using the DataList control

   <source lang="csharp">

<%@ 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>

       <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>

We have customers in the following cities

               </HeaderTemplate> 
               <ItemTemplate>
                   <%# Eval("City") %>   <%# Eval("Country")%>
               </ItemTemplate>
               <FooterTemplate>
                   <%# CalcTotal() %> cities
               </FooterTemplate>
           </asp:DataList>
       </form>

</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();
   }

}</source>


Nested data bind sample

   <source lang="csharp">

<%@ 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">

Nested data bind sample

        <asp:DataList ID="_outerDataList" runat="server" 
                     DataSourceID="_bookstoreDataSource">
         <ItemTemplate>
           Title: <%# Eval("Title") %>
<asp:DataList runat="server" ID="_nestedDastaList" DataSource="<%# XPathSelect("chapter") %>"> <ItemTemplate>

Chapternum: <%# XPath("@num") %>

Chapter name: <%# XPath("@name") %>

               <%# XPath(".") %>
               
</ItemTemplate> </asp:DataList>
</ItemTemplate> </asp:DataList> <asp:XmlDataSource ID="_bookstoreDataSource" runat="server" DataFile="~/App_Data/Data.xml" XPath="/Data/genre/book" />
   </form>

</body> </html> File: Data.xml

 <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>

</source>