Sintassi dichiarativa per il controllo server Web Repeater

Aggiornamento: novembre 2007

Crea un controllo elenco associato a dati che consente di ottenere un layout personalizzato ripetendo un modello specificato per ogni elemento visualizzato nell'elenco.

<asp:Repeater
    DataMember="string"
    DataSource="string"
    DataSourceID="string"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed 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"
    OnUnload="Unload event handler"
    runat="server"
    Visible="True|False"
>
        <AlternatingItemTemplate>
            <!-- child controls -->
        </AlternatingItemTemplate>
        <FooterTemplate>
            <!-- child controls -->
        </FooterTemplate>
        <HeaderTemplate>
            <!-- child controls -->
        </HeaderTemplate>
        <ItemTemplate>
            <!-- child controls -->
        </ItemTemplate>
        <SeparatorTemplate>
            <!-- child controls -->
        </SeparatorTemplate>
</asp:Repeater>

Note

Utilizzare il controllo Repeater per creare un elenco associato a dati basato su modelli di base. Il controllo Repeater non contiene stili o layout incorporati, pertanto è necessario dichiarare esplicitamente tutti i tag HTML di layout, formattazione e stile all'interno dei modelli del controllo.

Il controllo Repeater è diverso da altri controlli elenco di dati poiché consente di inserire frammenti HTML nei propri modelli. In tal modo è consentito creare una struttura HTML complessa, ad esempio una tabella. Per creare ad esempio un elenco all'interno di una tabella HTML, avviare la tabella inserendo il tag <table> nel modello HeaderTemplate. Quindi, inserire tag <tr>, tag <td> ed elementi associati a dati nel modello ItemTemplate per creare le righe e le colonne della tabella. Se si desidera un aspetto diverso per elementi alterni nella tabella, creare un modelloAlternatingItemTemplate con lo stesso contenuto del modello ItemTemplate ma specificando uno stile diverso. Infine, completare la tabella inserendo il tag </table> nel modello FooterTemplate.

Nella tabella riportata di seguito sono elencati i diversi modelli del controllo Repeater.

Modello

Descrizione

AlternatingItemTemplate

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

FooterTemplate

Elementi di cui deve essere eseguito il rendering una volta, successivamente al rendering di tutte le righe con associazione dati. Viene generalmente utilizzato per chiudere un elemento aperto nel modello HeaderTemplate, ad esempio con un tag di tipo </table>.

Nota

Il modello FooterTemplate non può essere associato a dati.

HeaderTemplate

Elementi di cui deve essere eseguito il rendering una volta, prima che venga eseguito il rendering di qualsiasi riga con associazione dati. Viene normalmente utilizzato per avviare un elemento contenitore, ad esempio una tabella.

Nota

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

ItemTemplate

Elementi di cui viene eseguito il rendering una volta per ogni riga inclusa nell'origine dati. Per visualizzare i dati nel modello ItemTemplate, dichiarare uno o più controlli server Web e impostare le relative espressioni di associazione dati per restituire un campo nel DataSource del controllo Repeater. Nell'esempio riportato di seguito viene illustrata una dichiarazione che visualizza il campo contenente il nome in un controllo Label.

First Name:
<asp:Label runat="server"
   Text="<%# Container.DataItem.FirstName %>" />

SeparatorTemplate

Elementi di cui eseguire il rendering tra ogni riga, generalmente interruzioni di riga con tag (<br>, linee orizzontali con tag (<hr> e così via.

Nota

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

Il controllo Repeater non contiene alcun supporto di modifica o di selezione incorporato. È possibile creare un gestore per l'evento ItemCommand del controllo affinché elabori gli eventi inviati dai modelli al controllo.

Il controllo associa i propri modelli Item e AlternatingItem a una struttura di dati a cui viene fatto riferimento nelle proprietà DataSource o DataSourceID del controllo. I modelli Header, Footer e Separator non possono essere associati a dati. Se la proprietà DataSource del controllo Repeater è impostata ma non vengono restituiti dati, viene eseguito il rendering dei modelli Header e Footer, ma di nessun elemento. Se la proprietà DataSource non è impostata, non viene eseguito il rendering del controllo Repeater.

Attenzione:

Il testo non viene codificato in formato HTML prima di essere visualizzato nel controllo Repeater. È 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 Repeater, vedere la documentazione relativa alla classe Repeater.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare la proprietà DataSourceID per specificare l'origine dati per un controllo Repeater. La proprietà DataSourceID è impostata sulla proprietà ID del controllo SqlDataSource utilizzata per il recupero dei dati. Quando la pagina viene caricata, il controllo Repeater viene automaticamente associato all'origine dati specificata dal controllo SqlDataSource e i dati vengono visualizzati all'utente.

<%@ Page Language="VB" %>

<!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>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>
<%@ 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>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>

Vedere anche

Riferimenti

Repeater

Altre risorse

Sintassi dei controlli server Web