Repeater-Webserversteuerelement
Erstellt ein datengebundenes Listensteuerelement, das ein benutzerdefiniertes Layout ermöglicht, indem eine angegebene Vorlage auf jedes in der Liste angezeigte Element angewendet wird.
<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>
Hinweise
Mit dem Repeater-Steuerelement können Sie eine mit Hilfe von Vorlagen definierte, datengebundene Liste anzeigen. Das Repeater-Steuerelement enthält keine integrierten Layouts oder Formate. Daher müssen alle HTML-Tags für Layout, Formatierung und Formatvorlagen explizit in den Vorlagen für das Steuerelement deklariert werden.
Das Repeater-Steuerelement unterscheidet sich von anderen Datenlistensteuerelementen darin, dass Sie damit HTML-Fragmente in die Vorlagen platzieren können. Dadurch können Sie eine komplexe HTML-Struktur erstellen, z. B. eine Tabelle. Um beispielsweise eine Liste innerhalb einer HTML-Tabelle zu generieren, beginnen Sie mit der Tabelle, indem Sie das <table>-Tag in die HeaderTemplate platzieren. Als Nächstes erstellen Sie die Zeilen und Spalten der Tabelle, indem Sie <tr>-Tags, <td>-Tags und datengebundene Elemente in die ItemTemplate platzieren. Falls Sie für alternierende Elemente in der Tabelle ein anderes Aussehen wünschen, erstellen Sie eine AlternatingItemTemplate mit dem gleichen Inhalt wie ItemTemplate, jedoch mit einem anderen Format. Zuletzt vervollständigen Sie die Tabelle, indem Sie das </table>-Tag in die FooterTemplate platzieren.
In der folgenden Tabelle sind die verschiedenen Vorlagen für das Repeater-Steuerelement aufgelistet.
Vorlage | Beschreibung |
---|---|
AlternatingItemTemplate | Entspricht dem ItemTemplate-Element, wird jedoch für jede zweite Zeile (alternierende Elemente) im Repeater-Steuerelement dargestellt. Sie können ein anderes Erscheinungsbild für das AlternatingItemTemplate-Element angeben, indem Sie dessen Formateigenschaften setzen. |
FooterTemplate | Elemente, die einmal dargestellt werden, nachdem alle datengebundenen Zeilen dargestellt worden sind. Eine typische Verwendung hierfür ist das Schließen eines Elements, das im HeaderTemplate-Element geöffnet wurde (mit einem Tag wie etwa </table>).
Hinweis Das FooterTemplate-Element kann nicht datengebunden sein. |
HeaderTemplate | Elemente, die einmal dargestellt werden, bevor alle datengebundenen Zeilen angezeigt werden. Eine typische Verwendung hierfür ist der Beginn eines Containerelements, z. B. einer Tabelle.
Hinweis Das HeaderTemplate-Element kann nicht datengebunden sein. |
ItemTemplate | Elemente, die einmal für jede Zeile in der Datenquelle dargestellt werden. Um Daten in der ItemTemplate anzuzeigen, deklarieren Sie ein oder mehrere Webserversteuerelemente und legen deren Datenbindungsausdrücke so fest, dass sie in ein Feld in der DataSource des Repeater-Steuerelements (also des Containersteuerelements) ausgewertet werden. Das folgende Beispiel veranschaulicht eine Deklaration, in der das Feld, das den Vornamen enthält, in einem Label-Steuerelement angezeigt wird.
|
SeparatorTemplate | Elemente, die zwischen jeder Zeile dargstellt werden, typischerweise Zeilenumbrüche (<br>-Tags), horizontale Linien (<hr>-Tags) usw.
Hinweis Das SeparatorTemplate-Element kann nicht datengebunden sein. |
Das Repeater-Steuerelement enthält keine integrierte Auswahl- oder Bearbeitungsunterstützung. Sie können einen Handler für das ItemCommand-Ereignis des Steuerelements erstellen, um Steuerelementereignisse zu verarbeiten, die von den Vorlagen an das Steuerelement gesendet werden.
Das Steuerelement bindet seine Item-Vorlage und seine AlternatingItem-Vorlage an eine Datenstruktur, auf die in der DataSource-Eigenschaft des Steuerelements verwiesen wird. (Die Vorlagen Header, Footer und Separator können nicht an Daten gebunden werden.) Wenn die DataSource-Eigenschaft des Repeater-Steuerelements gesetzt ist, aber keine Daten zurückgegeben werden, stellt das Steuerelement die Header-Vorlage und die Footer-Vorlage dar, jedoch keine Elemente. Wenn die DataSource-Eigenschaft nicht gesetzt ist, wird das Repeater-Steuerelement nicht dargestellt.
Vorsicht Text wird nicht in HTML codiert, bevor er im Repeater-Steuerelement angezeigt wird. Auf diese Weise können Skripts in HTML-Tags in den Text eingebunden werden. Wenn die Werte in diesem Steuerelement aus Benutzereingaben stammen, müssen die Werte unbedingt geprüft werden, um die Sicherheit zu gewährleisten.
Weitere Informationen zu den Eigenschaften und Ereignissen des Repeater-Webserversteuerelements finden Sie unter Repeater-Klasse.
Beispiel
Das folgende Beispiel veranschaulicht, wie mit dem Repeater-Steuerelement die Elemente einer Datenquelle angezeigt werden.
<%@ 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>