Répéteur de formulaires Web
Le contrôle Répéteur permet d'afficher une liste répétitive d'éléments liés au contrôle.
Lier DataSet au contrôle Repeater
Le contrôle Repeater est utilisé pour 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") :
<catalogue>
<cd>
<title>Empire Burlesque</title>
<artiste>Bob Dylan</artiste>
<pays>États-Unis</pays>
<entreprise>Columbia</entreprise>
<prix>10,90</prix>
<année>1985</année>
</cd>
<cd>
<title>Cachez votre cœur</title>
<artiste>Bonnie Tyler</artiste>
<pays>Royaume-Uni</pays>
<entreprise>CBS Records</entreprise>
<prix>9,90</prix>
<année>1988</année>
</cd>
<cd>
<title>Les plus grands succès</title>
<artiste>Dolly Parton</artiste>
<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>
<artiste>Gary Moore</artiste>
<pays>Royaume-Uni</pays>
<entreprise>Virgin records</entreprise>
<prix>10,20</prix>
<année>1990</année>
</cd>
<cd>
<title>Eros</title>
<artiste>Eros Ramazzotti</artiste>
<pays>UE</pays>
<entreprise>BMG</entreprise>
<prix>9,90</prix>
<année>1997</année>
</cd>
</catalogue>
Affichez 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 la page .aspx :
Ensuite, pour XML Le fichier crée un DataSet et charge ce fichier XML dans le DataSet lors du premier chargement de la page :
sub Page_Load
if Not Page. IsPostBack alors
dim mycdcatalog=Nouveau jeu de données
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
Ensuite, 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, et enfin, le contenu de l'élément <ItemTemplate> Élément FooterTemplate> Le contenu de n'apparaît qu'une seule fois dans la sortie :
<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 liez le DataSet mycdcatalog au contrôle Repeater. Alors Utilisez des balises HTML pour remplir le contrôle Repeater et lier les éléments de données aux cellules de la zone <ItemTemplate> via <%#Container.DataItem("fieldname")%> :
Instance
<%@ 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> <!DOCTYPE html> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Company</th> <th>Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Exécuter l'instance»
Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne
Utiliser< AlternatingItemTemplate>
Vous pouvez ajouter un élément <AlternatingItemTemplate> après l'élément <ItemTemplate> pour décrire l'apparence des lignes alternées dans la sortie. Dans l'exemple suivant, une ligne sur deux du tableau est affichée avec un fond gris clair :
Instance
<%@ 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> <!DOCTYPE html> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Company</th> <th>Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Instance en cours d'exécution»
Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne
Utilisez l'élément <SeparatorTemplate>
<SeparatorTemplate> pour décrire le séparateur entre chaque enregistrement. Dans l'exemple suivant, une ligne horizontale est insérée entre chaque ligne du tableau :
Instance
<%@ 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> <!DOCTYPE html> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="0" width="100%"> <tr> <th align="left">Title</th> <th align="left">Artist</th> <th align="left">Company</th> <th align="left">Price</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%> </td> <td><%#Container.DataItem("artist")%> </td> <td><%#Container.DataItem("company")%> </td> <td><%#Container.DataItem("price")%> </td> </tr> </ItemTemplate> <SeparatorTemplate> <tr> <td colspan="6"><hr></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </html> </body>
Instance en cours d'exécution»
Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne