ASP.NET - DataList-kontroll

DataList-kontrollen, liknande Repeater-kontrollen, används för att visa upprepade listor av objekt begränsade till kontrollen. Dock lägger DataList-kontrollen automatiskt till en tabell på dataobjekten.

Binda DataSet till DataList-kontroll

DataList-kontrollen, liknande Repeater-kontrollen, används för att visa upprepade listor av objekt begränsade till kontrollen. Dock lägger DataList-kontrollen automatiskt till en tabell på dataobjekten. DataList-kontrollen kan binds till databastabeller, XML-filer eller andra objektslistor. Här kommer vi att visa hur man binder en XML-fil till en DataList-kontroll.

Vi kommer att använda följande XML-fil ("cdcatalog.xml") i vårt exempel:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
  <title>Empire Burlesque</title>
  <artist>Bob Dylan</artist>
  <land>USA</land>
  <företag>Columbia</företag>
  <pris>10.90</pris>
  <år>1985</år>
</cd>
<cd>
  <titel>Hide your heart</titel>
  <artist>Bonnie Tyler</artist>
  <land>UK</land>
  <företag>CBS Records</företag>
  <pris>9.90</pris>
  <år>1988</år>
</cd>
<cd>
  <titel>Greatest Hits</titel>
  <artist>Dolly Parton</artist>
  <land>USA</land>
  <företag>RCA</företag>
  <pris>9.90</pris>
  <år>1982</år>
</cd>
<cd>
  <titel>Still got the blues</titel>
  <artist>Gary Moore</artist>
  <land>UK</land>
  <företag>Virgin records</företag>
  <pris>10.20</pris>
  <år>1990</år>
</cd>
<cd>
  <titel>Eros</titel>
  <artist>Eros Ramazzotti</artist>
  <land>EU</land>
  <företag>BMG</företag>
  <pris>9.90</pris>
  <år>1997</år>
</cd>
</catalog>

Se till XML-filen här:cdcatalog.xml

Först, importera "System.Data"-namnrymden. Vi behöver denna namnrymd för att arbeta med DataSet-objekt. Inkludera följande instruktion i toppen av .aspx-sidan:

<%@ Import Namespace="System.Data" %>

Nästa steg är att skapa en DataSet för denna XML-fil och ladda in XML-filen i DataSet vid sidans första laddning:

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub

Därefter skapar vi en DataList-kontroll i .aspx-sidan. Innehållet i <HeaderTemplate>-elementet visas endast en gång i utdata, medan innehållet i <ItemTemplate>-elementet återkommer i enlighet med "record" i DataSet, slutligen visas innehållet i <FooterTemplate> endast en gång i utdata:

<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

Därefter lägger vi till skript som skapar en DataSet och binder denna mycdcatalog DataSet till DataList-kontrollen. Vi använder också dessa element för att fylla DataList-kontrollen: <HeaderTemplate> som innehåller rubriken, <ItemTemplate> som innehåller de data som ska visas, och <FooterTemplate> som innehåller text.Observera att DataList:s gridlines-attribut är satt till "both" för att visa tabelldragar:

<%@ 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>
Min CD Katalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" av
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
Copyright codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

Visa detta exempel

Använd stil

Du kan också lägga till stil till DataList-kontrollen för att göra den mer stilfull:

<%@ 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>
Min CD Katalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" av
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
Copyright codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

Visa detta exempel

Använd <AlternatingItemTemplate>

Du kan lägga till ett <AlternatingItemTemplate>-element efter <ItemTemplate>-elementet för att beskriva utseendet på varje ojämna rad. Du kan styla data i <AlternatingItemTemplate>-delen inom DataList-kontrollen:

<%@ 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>
Min CD Katalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" av
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<AlternatingItemTemplate>
"<%#Container.DataItem("title")%>" av
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</AlternatingItemTemplate>
<FooterTemplate>
© codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

Visa detta exempel