Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:Repeaterid="Repeater1" DataSource="<% databindingexpression %>" runat=server> <HeaderTemplate> Header template HTML </HeaderTemplate> <ItemTemplate>Item template HTML </ItemTemplate> <AlternatingItemTemplate> Alternating item template HTML </AlternatingItemTemplate> <SeparatorTemplate> Separator template HTML </SeparatorTemplate> <FooterTemplate> Footer template HTML </FooterTemplate><asp:Repeater>
Osservazioni
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 posizionando il tag <table> nel modello HeaderTemplate. Quindi, inserire tag <tr>, tag <td> e 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 modello AlternatingItemTemplate con lo stesso contenuto del modello ItemTemplate, ma con un diverso stile specificato. Infine, completare la tabella inserendo il tag </table> nel modello FooterTemplate.
Nella tabella seguente sono elencati i diversi modelli del controllo Repeater.
| Modello | Descrizione |
|---|---|
| AlternatingItemTemplate | Analogo all'elemento ItemTemplate, ma 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 normalmente utilizzato per chiudere un elemento aperto nel modello HeaderTemplate, ad esempio con un tag </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 Il modello 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 seguente viene illustrata una dichiarazione che visualizza il campo contenente il nome in un controllo Label.
|
| 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 Il modello 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 nella proprietà DataSource 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, il controllo esegue il rendering dei modelli Header e Footer ma non visualizza alcun 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 Repeater, vedere la documentazione di Classe Repeater.
Esempio
Nell'esempio seguente viene mostrato come utilizzare il controllo Repeater per visualizzare gli elementi di un'origine dati.
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub Page_Load(Sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim values As New ArrayList()
values.Add(New PositionData("Microsoft", "Msft"))
values.Add(New PositionData("Intel", "Intc"))
values.Add(New PositionData("Dell", "Dell"))
Repeater1.DataSource = values
Repeater1.DataBind()
Repeater2.DataSource = values
Repeater2.DataBind()
End If
End Sub
Public Class PositionData
Private myName As String
Private myTicker As String
Public Sub New(newName As String, newTicker As String)
Me.myName = newName
Me.myTicker = newTicker
End Sub
Public ReadOnly Property Name() As String
Get
Return myName
End Get
End Property
Public ReadOnly Property Ticker() As String
Get
Return myTicker
End Get
End Property
End Class
</script>
</head>
<body>
<form runat="server">
<h3>Repeater Example</h3>
<b>Repeater1:</b>
<p>
<asp:Repeater id=Repeater1 runat="server">
<HeaderTemplate>
<table border=1>
<tr>
<td><b>Company</b></td>
<td><b>Symbol</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Ticker") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<p>
<b>Repeater2:</b>
<p>
<asp:Repeater id=Repeater2 runat="server">
<HeaderTemplate>
Company data:
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
(<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void Page_Load(Object Sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList values = new ArrayList();
values.Add(new PositionData("Microsoft", "Msft"));
values.Add(new PositionData("Intel", "Intc"));
values.Add(new PositionData("Dell", "Dell"));
Repeater1.DataSource = values;
Repeater1.DataBind();
Repeater2.DataSource = values;
Repeater2.DataBind();
}
}
public class PositionData
{
private string name;
private string ticker;
public PositionData(string name, string ticker)
{
this.name = name;
this.ticker = ticker;
}
public string Name
{
get
{
return name;
}
}
public string Ticker
{
get
{
return ticker;
}
}
}
</script>
</head>
<body>
<form runat="server">
<h3>Repeater Example</h3>
<b>Repeater1:</b>
<p>
<asp:Repeater id=Repeater1 runat="server">
<HeaderTemplate>
<table border=1>
<tr>
<td><b>Company</b></td>
<td><b>Symbol</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Ticker") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<p>
<b>Repeater2:</b>
<p>
<asp:Repeater id=Repeater2 runat="server">
<HeaderTemplate>
Company data:
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
(<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>