Share via


Cenni preliminari sul controllo server Web Repeater

Aggiornamento: novembre 2007

Il controllo server Web Repeater è un controllo contenitore associato a dati che genera un elenco di singoli elementi. Il layout dei singoli elementi viene definito in una pagina Web mediante i modelli. Quando la pagina è in esecuzione, il controllo ripete il layout per ciascun elemento incluso nell'origine dati.

Vengono illustrati i seguenti argomenti:

  • Informazioni di supporto

  • Esempi di codice

  • Riferimento alle classi

Informazioni di supporto

Il controllo server Web Repeater è un controllo contenitore che consente di creare elenchi personalizzati a partire da qualsiasi dato disponibile per la pagina. Il controllo Repeater non ha un proprio rendering incorporato, il che significa che è necessario fornire il layout per il controllo Repeater tramite la creazione dei modelli. Quando la pagina è in esecuzione, il controllo Repeater scorre in ciclo i record dell'origine dati ed esegue il rendering di un elemento per ciascun record.

Poiché il controllo Repeater non presenta un aspetto predefinito, è possibile utilizzarlo per creare diversi tipi di elenchi, compresi i seguenti:

  • Un layout di tabella

  • Un elenco delimitato da virgole, ad esempio: "a, b, c, d" e così via

  • Un elenco in formato XML

Utilizzo dei modelli con il controllo Repeater

Per utilizzare il controllo Repeater si creano modelli che definiscono il layout del contenuto del controllo. I modelli possono contenere qualsiasi combinazione di codice e controlli. Se non viene definito alcun modello o se nessuno dei modelli contiene elementi, il controllo non viene visualizzato nella pagina quando viene eseguita l'applicazione.

Nella tabella riportata di seguito viene fornita la descrizione dei modelli supportati dal controllo Repeater.

Proprietà di modello

Descrizione

ItemTemplate

Include i controlli e gli elementi HTML di cui deve essere eseguito il rendering una volta per ciascun elemento dati contenuto nell'origine dati.

AlternatingItemTemplate

Include i controlli e gli elementi HTML di cui deve essere eseguito il rendering una volta per ciascun altro elemento di dati contenuto nell'origine dati. Questo modello è in genere utilizzato per differenziare l'aspetto degli elementi alternati, ad esempio per assegnare un colore di sfondo diverso da quello specificato in ItemTemplate.

HeaderTemplate e FooterTemplate

Include il testo e i controlli di cui deve essere eseguito il rendering rispettivamente all'inizio e alla fine dell'elenco.

SeparatorTemplate

Include gli elementi di cui deve essere eseguito il rendering tra ciascun elemento. Un esempio tipico può essere una riga, per la quale viene utilizzato un elemento hr.

Per ulteriori informazioni, vedere Modelli dei controlli server Web ASP.NET.

Associazione di dati al controllo Repeater

Il controllo Repeater deve essere associato a un'origine dati. L'origine dati più comune è un controllo origine dati, quale SqlDataSource o ObjectDataSource. In alternativa, è possibile associare un controllo Repeater a ogni classe che implementi l'interfaccia IEnumerable, in cui sono inclusi i dataset ADO.NET (classe DataSet), lettori dati (classe SqlDataReader o OleDbDataReader) oppure più insiemi.

Quando si associano i dati, è necessario specificare un'origine dati per l'intero controllo Repeater. Quando si aggiungono controlli al controllo Repeater, ad esempio quando si aggiungono i controlli Label o TextBox in un modello, si utilizza la sintassi di associazione dati per associare il singolo controllo a un campo degli elementi restituiti dall'origine dati. Nel seguente esempio viene illustrato un ItemTemplate che contiene un controllo Label con associazione a dati.

<%@ 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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
            [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </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 id="Head1" >
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Repeater ID="Repeater1"  DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label  ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label  ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label  ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1"  SelectCommand="SELECT [CategoryID], [CategoryName], 
              [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
Nota:

Non è possibile associare controlli ai modelli per intestazioni, piè di pagina e separatori utilizzando la funzione di associazione dati Eval. Se in questi modelli sono presenti controlli, è sufficiente definirne le proprietà a livello statico.

Per informazioni generali sull'associazione dati nei controlli server Web, vedere Procedura dettagliata: accesso ai dati di base nelle pagine Web e Procedura: aggiungere controlli server Web Repeater a una pagina Web Form.

Eventi supportati dal controllo Repeater

Il controllo Repeater supporta diversi eventi. Uno di questi, l'evento ItemCreated, consente di personalizzare il processo di creazione degli elementi in fase di esecuzione. L'evento ItemDataBound fornisce inoltre la possibilità di personalizzare il controllo Repeater, ma solo dopo che i dati sono disponibili per la verifica. Quando ad esempio si utilizza il controllo Repeater per visualizzare un elenco delle operazioni da eseguire, è possibile contrassegnare in rosso gli elementi di cui è stata superata la scadenza, in nero gli elementi completati e in verde le altre attività. Entrambi gli eventi possono essere utilizzati per eseguire una formattazione diversa da quella definita dal modello.

L'evento ItemCommand viene generato in seguito a un clic del mouse su un pulsante nei singoli elementi. Questo evento è progettato per consentire all'utente di incorporare un Button, un LinkButton o un controllo server Web ImageButton in un elemento modello, quindi di essere informato quando il pulsante viene selezionato. Quando un utente fa clic su un pulsante, l'evento viene inviato al contenitore del pulsante, ovvero al controllo Repeater. L'evento ItemCommand viene in genere utilizzato per programmare le operazioni di aggiornamento o eliminazione per il controllo Repeater. Poiché ogni selezione del pulsante genera lo stesso evento ItemCommand, è possibile determinare quali pulsanti sono stati selezionati impostando la proprietà CommandName di ciascun pulsante su un valore di stringa univoco. La proprietà CommandSource del parametro RepeaterCommandEventArgs contiene la proprietà CommandName del pulsante selezionato.

Per ulteriori informazioni, vedere Procedura: rispondere a eventi Button in elementi DataList o Repeater.

Torna all'inizio

Esempi di codice

Procedura: aggiungere controlli server Web Repeater a una pagina Web Form

Torna all'inizio

Riferimento alle classi

Nella tabella riportata di seguito sono elencate le classi principali correlate al controllo Repeater.

Membro

Descrizione

Repeater

La classe principale del controllo.

Torna all'inizio

Vedere anche

Riferimenti

Cenni preliminari sul controllo server Web DataList