ASP.NET Web Forms - Contrôle du répéteur
Le contrôle ASP.NETRepeater est le contrôle de liaison de données d'origine. Cette section présente l'utilisation du contrôle Repeater dans les opérations de liaison de données ASP.NET.
Le contrôle Repeater permet d'afficher une liste répétitive d'éléments liés au contrôle.
Liez le DataSet au contrôle Repeater
Le contrôle Repeater permet d'afficher une liste répétitive d'éléments liés au contrôle. Les contrôles répéteurs peuvent être liés à des tables de base de données, des fichiers XML ou d'autres listes d'éléments. Ici, nous allons montrer comment lier un fichier XML à un contrôle Repeater.
Dans notre exemple, nous utiliserons le fichier XML suivant ("cdcatalog.xml") :
<?xml version="1.0" encoding="ISO-8859-1"?> <catalogue> <cd> <title>Empire Burlesque</title> <artiste>Bob Dylan</artiste> <pays>États-Unis</pays > <company>Columbia</company> <price>10,90</price> <year>1985</year> </cd> <cd> <title>Cachez votre cœur</title> <artist>Bonnie Tyler</artist> <country>Royaume-Uni</country> <company>CBS Records</company> <price>9,90</price> <année>1988</année> </cd> <cd> <title>Greatest Hits </title> <artist>Dolly Parton</artist> <pays>États-Unis</pays> <entreprise>RCA</entreprise> <prix>9,90</prix> <année>1982</année> </cd> <cd> <title>J'ai toujours le blues</title> <artist>Gary Moore</artist> <country>Royaume-Uni</country> <company>Virgin records</company> <price>10.20</price> <year >1990</année> </cd> <cd> <titre>Eros</title> <artiste>Eros Ramazzotti</artiste> <pays>UE</pays> <entreprise>BMG</entreprise> <prix>9,90</prix> <année>1997</année> </cd> </catalog>Afficher ce fichier XML : cdcatalog.xml
Tout d’abord, importez l’espace de noms « System.Data ». Nous avons besoin de cet espace de noms pour travailler avec les objets DataSet. Incluez la directive suivante en haut de votre page .aspx :
<%@ Importer l'espace de noms="System.Data" %>Ensuite, créez un DataSet pour le fichier XML et chargez le fichier XML dans le DataSet lors du premier chargement de la page :
<script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) end if end subEnsuite, nous créons un contrôle Repeater dans la page .aspx. Le contenu de l'élément <HeaderTemplate> est rendu en premier et n'apparaît qu'une seule fois dans la sortie, tandis que le contenu de l'élément <ItemTemplate> est répété pour chaque « enregistrement » du DataSet. Enfin, le contenu de l'élément <FooterTemplate> est répété. Apparaît une seule fois dans la sortie :
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>Ensuite, nous ajoutons le script pour créer le DataSet et lions le mycdcatalog DataSet au contrôle Repeater. Utilisez ensuite des balises HTML pour remplir le contrôle Repeater et liez les éléments de données aux cellules de la zone <ItemTemplate> via <%#Container.DataItem("fieldname")%> :
Exemple
<%@ 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>Titre</th> <th>Artiste</th> <th>Pays </th> <th>Entreprise</th> <th>Prix</th> <th>Année</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "pays")%></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>Astuce : Pour tout savoir sur les balises HTML, vous pouvez vous référer au « Manuel de référence HTML » de ce site !
Utiliser <AlternatingItemTemplate>
Vous pouvez ajouter un élément <AlternatingItemTemplate> après un élément <ItemTemplate> pour décrire l'apparence des lignes alternées dans la sortie. Dans l'exemple ci-dessous, une ligne sur deux du tableau est affichée avec un fond gris clair :
Exemple
<%@ 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>Titre</th> <th>Artiste</th> <th>Pays </th> <th>Entreprise</th> <th>Prix</th> <th>Année</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "pays")%></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("artiste")%></td> <td><%#Container.DataItem("pays")%></td> <td><%#Container.DataItem( "société")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < /corps> </html>Utiliser <SeparatorTemplate>
L'élément <SeparatorTemplate> est utilisé pour décrire le séparateur entre chaque enregistrement. Dans l'exemple ci-dessous, une ligne horizontale est insérée entre chaque ligne du tableau :
Exemple
<%@ 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>Titre</th> <th>Artiste</th> <th>Pays </th> <th>Entreprise</th> <th>Prix</th> <th>Année</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "pays")%></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>Ce qui précède est une introduction à l’utilisation du contrôle ASP.NETRepeater.