Gli ultimi tutorial di sviluppo web
 

ASP.NET Web Forms - Il controllo DataList


Il controllo DataList è, come il controllo Repeater, usata per visualizzare un elenco ripetuto di elementi che sono legati al controllo. Tuttavia, il controllo DataList aggiunge un tavolo intorno gli elementi di dati per impostazione predefinita.


Associare un DataSet a un controllo DataList

Il controllo DataList è, come il controllo Repeater, usata per visualizzare un elenco ripetuto di elementi che sono legati al controllo. Tuttavia, il controllo DataList aggiunge un tavolo intorno gli elementi di dati per impostazione predefinita. Il controllo DataList può essere associato a una tabella di database, un file XML o un altro elenco di elementi. Qui mostreremo come associare un file XML per un controllo DataList.

Useremo il seguente file XML nei nostri esempi ("cdcatalog.xml") :

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

Date un'occhiata al file XML: cdcatalog.xml

In primo luogo, importare il "System.Data" namespace. Abbiamo bisogno di questo spazio dei nomi di lavorare con oggetti DataSet. Includere la seguente direttiva nella parte superiore di una pagina aspx:

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

Successivamente, creare un set di dati per il file XML e caricare il file XML nel DataSet quando la pagina viene caricata per la prima:

<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 DataList in una pagina aspx. Il contenuto del <HeaderTemplate> elemento sono resi prima e solo una volta all'interno dell'output, quindi il contenuto del <ItemTemplate> elemento vengono ripetute per ogni "record" nel DataSet, e ultimo, il contenuto del <FooterTemplate> elemento sono resi volta all'interno dell'uscita:

<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 che crea il DataSet e lega il DataSet mycdcatalog al controllo DataList. Abbiamo anche riempire il controllo DataList con un <HeaderTemplate> che contiene l'intestazione della tavola, un <ItemTemplate> che contiene gli elementi dati da visualizzare, ed un <FooterTemplate> che contiene un testo. Si noti che la gridlines attributo del DataList è impostato su "both" per visualizzare i bordi di tabella:

Esempio

<%@ 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>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>

<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>

</asp:DataList>
</form>

</body>
</html>
Visualizza l'esempio »

Uso degli stili

È inoltre possibile aggiungere stili per il controllo DataList per rendere l'output più fantasia:

Esempio

<%@ 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>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>

<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>

</asp:DataList>
</form>

</body>
</html>
Visualizza l'esempio »

Utilizzando la <AlternatingItemTemplate>

È possibile aggiungere un <AlternatingItemTemplate> elemento dopo l' <ItemTemplate> elemento per descrivere l'aspetto di righe di uscita alternata. Si può stile i dati nel <AlternatingItemTemplate> sezione all'interno del controllo DataList:

Esempio

<%@ 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>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>

<AlternatingItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</AlternatingItemTemplate>

<FooterTemplate>
&copy; Hege Refsnes
</FooterTemplate>

</asp:DataList>
</form>

</body>
</html>
Visualizza l'esempio »