Condividi tramite


Sintassi dichiarativa per il controllo server Web DataList

Aggiornamento: novembre 2007

Visualizza gli elementi di un'origine dati utilizzando diversi modelli. Modificando i modelli che compongono i diversi componenti del controllo DataList, ad esempio ItemTemplate e HeaderTemplate, è possibile personalizzarne l'aspetto e i contenuti.

<asp:DataList
    AccessKey="string"
    BackColor="color name|#dddddd"
    BorderColor="color name|#dddddd"
    BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|
        Inset|Outset"
    BorderWidth="size"
    Caption="string"
    CaptionAlign="NotSet|Top|Bottom|Left|Right"
    CellPadding="integer"
    CellSpacing="integer"
    CssClass="string"
    DataKeyField="string"
    DataMember="string"
    DataSource="string"
    DataSourceID="string"
    EditItemIndex="integer"
    Enabled="True|False"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ExtractTemplateRows="True|False"
    Font-Bold="True|False"
    Font-Italic="True|False"
    Font-Names="string"
    Font-Overline="True|False"
    Font-Size="string|Smaller|Larger|XX-Small|X-Small|Small|Medium|
        Large|X-Large|XX-Large"
    Font-Strikeout="True|False"
    Font-Underline="True|False"
    ForeColor="color name|#dddddd"
    GridLines="None|Horizontal|Vertical|Both"
    Height="size"
    HorizontalAlign="NotSet|Left|Center|Right|Justify"
    ID="string"
    OnCancelCommand="CancelCommand event handler"
    OnDataBinding="DataBinding event handler"
    OnDeleteCommand="DeleteCommand event handler"
    OnDisposed="Disposed event handler"
    OnEditCommand="EditCommand event handler"
    OnInit="Init event handler"
    OnItemCommand="ItemCommand event handler"
    OnItemCreated="ItemCreated event handler"
    OnItemDataBound="ItemDataBound event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnSelectedIndexChanged="SelectedIndexChanged event handler"
    OnUnload="Unload event handler"
    OnUpdateCommand="UpdateCommand event handler"
    RepeatColumns="integer"
    RepeatDirection="Horizontal|Vertical"
    RepeatLayout="Table|Flow"
    runat="server"
    SelectedIndex="integer"
    ShowFooter="True|False"
    ShowHeader="True|False"
    SkinID="string"
    Style="string"
    TabIndex="integer"
    ToolTip="string"
    UseAccessibleHeader="True|False"
    Visible="True|False"
    Width="size"
>
        <AlternatingItemStyle />
        <AlternatingItemTemplate>
            <!-- child controls -->
        </AlternatingItemTemplate>
        <EditItemStyle />
        <EditItemTemplate>
            <!-- child controls -->
        </EditItemTemplate>
        <FooterStyle />
        <FooterTemplate>
            <!-- child controls -->
        </FooterTemplate>
        <HeaderStyle />
        <HeaderTemplate>
            <!-- child controls -->
        </HeaderTemplate>
        <ItemStyle />
        <ItemTemplate>
            <!-- child controls -->
        </ItemTemplate>
        <SelectedItemStyle />
        <SelectedItemTemplate>
            <!-- child controls -->
        </SelectedItemTemplate>
        <SeparatorStyle />
        <SeparatorTemplate>
            <!-- child controls -->
        </SeparatorTemplate>
</asp:DataList>

Note

È possibile modificare il layout e il contenuto del controllo tramite la definizione di modelli. Nella tabella riportata di seguito sono elencati i diversi modelli del controllo DataList.

AlternatingItemTemplate

Analogo all'elemento ItemTemplate, con la differenza che nel controllo DataList viene eseguito il rendering a righe alterne. È possibile specificare un aspetto diverso per l'elemento AlternatingItemTemplate impostandone le proprietà di stile.

EditItemTemplate

Layout di un elemento in modalità di modifica. In questo modello sono in genere contenuti controlli di modifica, quali i controlli TextBox. Il modello EditItemTemplate viene richiamato per una riga del controlloDataList quando EditItemIndex è impostato sul numero ordinale di tale riga.

FooterTemplate

Testo e controlli di cui eseguire il rendering nel piè di pagina del controllo DataList.

Il modello FooterTemplate non può essere associato a dati.

HeaderTemplate

Testo e controlli di cui eseguire il rendering nell'intestazione del controllo DataList.

Il modello HeaderTemplate non può essere associato a dati.

ItemTemplate

Elementi di cui eseguire il rendering una volta per ogni riga inclusa nell'origine dati.

SelectedItemTemplate

Elementi di cui eseguire il rendering quando l'utente seleziona un elemento nel controllo DataList. Viene generalmente utilizzato per espandere il numero dei campi dati visualizzati e per evidenziare la riga.

SeparatorTemplate

Elementi di cui deve essere eseguito il rendering tra ciascun elemento.

L'elemento SeparatorTemplate non può essere associato a dati.

Specificando uno stile per le diverse parti del controllo DataList, è possibile personalizzarne l'aspetto. Nella tabella riportata di seguito sono elencate le diverse proprietà di stile per il controllo dell'aspetto delle diverse parti del controllo DataList.

Proprietà di stile

Descrizione

Classe di stile

AlternatingItemStyle

Stile di elementi alternati.

TableItemStyle

EditItemStyle

Stile dell'elemento in corso di modifica.

TableItemStyle

FooterStyle

Stile del piè di pagina al termine dell'elenco (se presente).

TableItemStyle

HeaderStyle

Stile dell'intestazione all'inizio dell'elenco (se presente).

TableItemStyle

ItemStyle

Stile di singoli elementi.

Style

SelectedItemStyle

Stile dell'elemento selezionato.

TableItemStyle

SeparatorStyle

Stile del separatore tra ogni elemento.

TableItemStyle

Nota

Il controllo DataList è diverso dal controllo Repeater, poiché supporta il rendering direzionale, tramite le proprietà RepeatColumns e RepeatDirection, e la possibilità di eseguire il rendering in una tabella HTML.

L'insieme Items contiene i membri associati a dati del controllo DataList. L'insieme viene compilato quando viene richiamato il metodo DataBind per il controllo DataList. L'eventuale intestazione viene aggiunta per prima, seguita da un oggetto Item per ogni riga di dati. Se esiste un SeparatorTemplate, vengono creati dei Separators che vengono aggiunti tra ciascun elemento ma non all'insieme Items.

Al termine della creazione di tutti gli elementi per le righe di DataSource, l'elemento Footer viene aggiunto al controllo, ma non all'insieme Items. Infine, il controllo genera l'evento ItemCreated per ogni elemento, inclusi l'intestazione, il piè di pagina e i separatori. A differenza di molti insiemi, l'insieme Items non espone metodi Add o Remove. Se, tuttavia, si fornisce un gestore per l'evento ItemCreated, è possibile modificare i contenuti di un elemento.

Attenzione:

Il testo non viene codificato in formato HTML prima di essere visualizzato nel controllo DataList. È pertanto possibile incorporare script all'interno dei tag HTML presenti nel testo. Se i valori del controllo provengono dall'input dell'utente, assicurarsi di convalidare tali valori per evitare problemi di protezione.

Per informazioni dettagliate sulle proprietà e sugli eventi del controllo server Web DataList, vedere la documentazione relativa alla classe DataList.

Esempio

Nell'esempio riportato di seguito viene illustrato come utilizzare il controllo DataList per visualizzare gli elementi di un'origine dati.

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!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" >
   <script runat="server">

      Function CreateDataSource() As ICollection 

         ' Create sample data for the DataList control.
         Dim dt As DataTable = New DataTable()
         dim dr As DataRow

         ' Define the columns of the table.
         dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
         dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
         dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
         dt.Columns.Add(New DataColumn("ImageValue", GetType(String)))

         ' Populate the table with sample values.
         Dim i As Integer

         For i = 0 To 8 

            dr = dt.NewRow()

            dr(0) = i
            dr(1) = "Description for item " & i.ToString()
            dr(2) = 1.23 * (i + 1)
            dr(3) = "Image" & i.ToString() & ".jpg"

            dt.Rows.Add(dr)

         Next i

         Dim dv As DataView = New DataView(dt)
         Return dv

      End Function

      Sub Page_Load(sender As Object, e As EventArgs) 

         ' Load sample data only once, when the page is first loaded.
         If Not IsPostBack Then 

            ItemsList.DataSource = CreateDataSource()
            ItemsList.DataBind()

         End If

      End Sub

   </script>

<head runat="server">
    <title>DataList Example</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Example</h3>

      <asp:DataList id="ItemsList"
           BorderColor="black"
           CellPadding="5"
           CellSpacing="5"
           RepeatDirection="Vertical"
           RepeatLayout="Table"
           RepeatColumns="3"
           runat="server">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="Gainsboro">
         </AlternatingItemStyle>

         <HeaderTemplate>

            List of items

         </HeaderTemplate>

         <ItemTemplate>

            Description: <br />
            <%# DataBinder.Eval(Container.DataItem, "StringValue") %>

            <br />

            Price: <%# DataBinder.Eval(Container.DataItem, "CurrencyValue", "{0:c}") %>

            <br />

            <asp:Image id="ProductImage" AlternateText="Product picture" 
                 ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageValue") %>'
                 runat="server"/>

         </ItemTemplate>

      </asp:DataList>

   </form>

</body>
</html>

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!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" >
   <script runat="server">

      ICollection CreateDataSource() 
      {

         // Create sample data for the DataList control.
         DataTable dt = new DataTable();
         DataRow dr;

         // Define the columns of the table.
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
         dt.Columns.Add(new DataColumn("ImageValue", typeof(String)));

         // Populate the table with sample values.
         for (int i = 0; i < 9; i++) 
         {
            dr = dt.NewRow();

            dr[0] = i;
            dr[1] = "Description for item " + i.ToString();
            dr[2] = 1.23 * (i + 1);
            dr[3] = "Image" + i.ToString() + ".jpg";

            dt.Rows.Add(dr);
         }

         DataView dv = new DataView(dt);
         return dv;
      }


      void Page_Load(Object sender, EventArgs e) 
      {

         // Load sample data only once, when the page is first loaded.
         if (!IsPostBack) 
         {
            ItemsList.DataSource = CreateDataSource();
            ItemsList.DataBind();
         }

      }

   </script>

<head runat="server">
    <title>DataList Example</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Example</h3>

      <asp:DataList id="ItemsList"
           BorderColor="black"
           CellPadding="5"
           CellSpacing="5"
           RepeatDirection="Vertical"
           RepeatLayout="Table"
           RepeatColumns="3"
           runat="server">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="Gainsboro">
         </AlternatingItemStyle>

         <HeaderTemplate>

            List of items

         </HeaderTemplate>

         <ItemTemplate>

            Description: <br />
            <%# DataBinder.Eval(Container.DataItem, "StringValue") %>

            <br />

            Price: <%# DataBinder.Eval(Container.DataItem, "CurrencyValue", "{0:c}") %>

            <br />

            <asp:Image id="ProductImage" AlternateText="Product picture" 
                 ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageValue") %>'
                 runat="server"/>

         </ItemTemplate>

      </asp:DataList>

   </form>

</body>
</html>

Vedere anche

Concetti

Controlli server ASP.NET

Riferimenti

DataList

Altre risorse

Sintassi dei controlli server Web