ASP.NET Web Forms – Repeater-Steuerung
Das ASP.NETRepeater-Steuerelement ist das ursprüngliche Datenbindungssteuerelement. In diesem Abschnitt wird die Verwendung des Repeater-Steuerelements in ASP.NET-Datenbindungsvorgängen vorgestellt.
Das Repeater-Steuerelement wird verwendet, um eine sich wiederholende Liste von Elementen anzuzeigen, die an das Steuerelement gebunden sind.
Binden Sie das DataSet an das Repeater-Steuerelement
Das Repeater-Steuerelement wird verwendet, um eine sich wiederholende Liste von Elementen anzuzeigen, die an das Steuerelement gebunden sind. Repeater-Steuerelemente können an Datenbanktabellen, XML-Dateien oder andere Elementlisten gebunden werden. Hier zeigen wir, wie man eine XML-Datei an ein Repeater-Steuerelement bindet.
In unserem Beispiel verwenden wir die folgende XML-Datei („cdcatalog.xml“):
<?xml version="1.0" binding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country > <company>Columbia</company> <price>10,90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9,90</price> <year>1988</year> </cd> <cd> <title>Greatest Hits </title> <artist>Dolly Parton</artist> <country>USA</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>Immer noch der Blues</title> <Künstler>Gary Moore</Künstler> <Land>UK</Land> <Firma>Virgin Records</Firma> <Preis>10,20</Preis> <Jahr >1990</Jahr> </cd> <cd> <title>Eros</title> <Künstler>Eros Ramazzotti</Künstler> <Land>EU</Land> <Firma>BMG</Firma> <price>9,90</price> <year>1997</year> </cd> </catalog>Sehen Sie sich diese XML-Datei an: cdcatalog.xml
Importieren Sie zunächst den Namespace „System.Data“. Wir benötigen diesen Namespace, um mit DataSet-Objekten arbeiten zu können. Fügen Sie die folgende Anweisung oben auf Ihrer ASPX-Seite ein:
<%@ Import Namespace="System.Data" %>Erstellen Sie als Nächstes ein DataSet für die XML-Datei und laden Sie die XML-Datei in das DataSet, wenn die Seite zum ersten Mal geladen wird:
<script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end subDann erstellen wir ein Repeater-Steuerelement auf der ASPX-Seite. Der Inhalt im <HeaderTemplate>-Element wird zuerst gerendert und erscheint nur einmal in der Ausgabe, während der Inhalt im <ItemTemplate>-Element für jeden „Datensatz“ im DataSet wiederholt wird. Schließlich ist der Inhalt im <FooterTemplate>-Element Erscheint nur einmal in der Ausgabe:
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>Dann fügen wir das Skript hinzu, um das DataSet zu erstellen und das mycdcatalog DataSet an das Repeater-Steuerelement zu binden. Verwenden Sie dann HTML-Tags, um das Repeater-Steuerelement zu füllen, und binden Sie Datenelemente über <%#Container.DataItem("fieldname")%> an Zellen im Bereich <ItemTemplate>:
Beispiel
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Titel</th> <th>Künstler</th> <th>Land </th> <th>Firma</th> <th>Preis</th> <th>Jahr</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <FooterTemplate > </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>Tipp: Weitere Informationen zu HTML-Tags finden Sie im „HTML-Referenzhandbuch“ dieser Website!
Verwenden Sie <AlternatingItemTemplate>
Sie können nach einem <ItemTemplate>-Element ein <AlternatingItemTemplate>-Element hinzufügen, um das Erscheinungsbild abwechselnder Zeilen in der Ausgabe zu beschreiben. Im folgenden Beispiel wird jede zweite Zeile der Tabelle mit einem hellgrauen Hintergrund angezeigt:
Beispiel
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Titel</th> <th>Künstler</th> <th>Land </th> <th>Firma</th> <th>Preis</th> <th>Jahr</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate > <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem( "company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < /body> </html>Verwenden Sie <SeparatorTemplate>
Das <SeparatorTemplate>-Element wird verwendet, um das Trennzeichen zwischen den einzelnen Datensätzen zu beschreiben. Im folgenden Beispiel wird zwischen jeder Tabellenzeile eine horizontale Linie eingefügt:
Beispiel
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table> <tr> <th>Titel</th> <th>Künstler</th> <th>Land </th> <th>Firma</th> <th>Preis</th> <th>Jahr</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <SeparatorTemplate > <tr> <td colspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>Das Obige ist eine Einführung in die Verwendung des ASP.NETRepeater-Steuerelements.