Freigeben über


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.
First Name:
<asp:Label runat="server"
   Text="<%# Container.DataItem.FirstName %>" />
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>

Siehe auch

Webserversteuerelemente | Repeater-Klasse