ASP.NET - Controllo DataList

Il controllo DataList, simile al controllo Repeater, viene utilizzato per visualizzare elenchi ripetuti di elementi limitati al controllo. Tuttavia, il controllo DataList aggiunge automaticamente una tabella agli elementi dei dati.

Associare DataSet al controllo DataList

Il controllo DataList, simile al controllo Repeater, viene utilizzato per visualizzare elenchi ripetuti di elementi limitati al controllo. Tuttavia, il controllo DataList aggiunge automaticamente una tabella agli elementi dei dati. Il controllo DataList può essere associato a tabelle di database, file XML o altre liste di elementi. In questo esempio, mostreremo come associare un file XML a un controllo DataList.

Utilizzeremo il seguente file XML ("cdcatalog.xml") nell'esempio:

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

Vedere questo file XML:cdcatalog.xml

Prima di tutto, importa lo spazio dei nomi "System.Data". Abbiamo bisogno di questo spazio dei nomi per lavorare con l'oggetto DataSet. Include questa istruzione nella parte superiore della pagina .aspx:

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

Prossimamente, crea un DataSet per questo file XML e carica questo file XML nel DataSet durante il caricamento della pagina:

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

Poi creiamo un controllo DataList nella pagina .aspx. Il contenuto dell'elemento <HeaderTemplate> appare una sola volta nell'output, mentre il contenuto dell'elemento <ItemTemplate> corrisponde alla ripetizione del "record" nel DataSet, infine, il contenuto di <FooterTemplate> appare una sola volta nell'output:

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

Poi aggiungiamo lo script per creare il DataSet e associamo il DataSet mycdcatalog al controllo DataList. Usiamo questi elementi per riempire il controllo DataList: <HeaderTemplate> che contiene l'intestazione, <ItemTemplate> che contiene gli elementi da visualizzare e <FooterTemplate> che contiene il testo. Nota che l'attributo gridlines del DataList è impostato su "both" per visualizzare i bordi della tabella:

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

Mostra questo esempio

Usa stili

Puoi anche aggiungere stili al controllo DataList per renderlo più elegante:

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

Mostra questo esempio

Usa <AlternatingItemTemplate>

Puoi aggiungere l'elemento <AlternatingItemTemplate> dopo l'elemento <ItemTemplate> per descrivere l'aspetto delle righe alternate. Puoi applicare stili al contenuto della parte <AlternatingItemTemplate> all'interno del controllo DataList:

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

Mostra questo esempio