Mise à jour : novembre 2007
Contrôle de liste lié aux données permettant une présentation personnalisée, grâce à l'application d'un modèle spécifié à chacun des éléments figurant dans la liste.
Espace de noms :
System.Web.UI.WebControls Assembly :
System.Web (dans System.Web.dll)
Visual Basic (Déclaration)
<AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
Public Class Repeater _
Inherits Control _
Implements INamingContainer
Visual Basic (Utilisation)
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public class Repeater : Control, INamingContainer
[AspNetHostingPermissionAttribute(SecurityAction::InheritanceDemand, Level = AspNetHostingPermissionLevel::Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction::LinkDemand, Level = AspNetHostingPermissionLevel::Minimal)]
public ref class Repeater : public Control,
INamingContainer
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public class Repeater extends Control implements INamingContainer
public class Repeater extends Control implements INamingContainer
Le contrôle Repeater correspond à une liste modélisée liée aux données. Comme il n'intègre pas de dispositions ni de styles intégrés, vous devez explicitement déclarer toutes les balises de présentation, de mise en forme et de style au sein des modèles du contrôle.
Le contrôle Repeater est le seul contrôle Web qui vous permet de fractionner des balises d'un modèle à un autre. Pour créer un tableau à l'aide de modèles, insérez une balise de début de tableau <table>) dans la propriété HeaderTemplate, une balise de ligne de tableau simple (<tr>) dans la propriété ItemTemplate et une balise de fin de tableau (</table>) dans la propriété FooterTemplate.
Le contrôle Repeater ne possède pas de fonctionnalité de sélection ni de prise en charge de l'édition. Vous pouvez utiliser l'événement ItemCommand pour traiter les événements de contrôle qui sont déclenchés des modèles au contrôle.
Le contrôle Repeater fournit deux propriétés pour prendre en charge la liaison de données. Pour lier des données à tout objet qui implémente l'interface System.Collections..::.IEnumerable (tel que System.Data..::.DataView, System.Collections..::.ArrayList, System.Collections..::.Hashtable ou un tableau), ou l'interface IListSource, utilisez la propriété DataSource pour spécifier la source de données. Lorsque vous définissez la propriété DataSource, vous devez écrire manuellement le code permettant d'effectuer la liaison de données. Pour lier automatiquement le contrôle Repeater à une source de données représentée par un contrôle de source de données, attribuez à la propriété DataSourceID la valeur ID du contrôle de source de données à utiliser. Lorsque vous définissez la propriété DataSourceID, le contrôle Repeater se lie automatiquement au contrôle de source de données spécifié lors de la première demande. Par conséquent, vous n'avez pas besoin d'appeler explicitement la méthode DataBind, sauf si vous avez modifié les propriétés liées aux données du contrôle Repeater.
Un contrôle Repeater lie son ItemTemplate et son AlternatingItemTemplate soit avec le modèle de données déclaré et référencé par sa propriété DataSource, soit avec le contrôle de source de données spécifié par sa propriété DataSourceID. Les propriétés HeaderTemplate, FooterTemplate et SeparatorTemplate ne sont pas liées aux données.
Si la source de données du contrôle Repeater est définie, mais qu'aucune donnée n'est retournée, le contrôle restitue alors HeaderTemplate et FooterTemplate sans élément. Si la source de données est nullNothingnullptrune référence null (Nothing en Visual Basic), le contrôle Repeater n'est pas restitué.
Chaque contrôle Repeater doit définir ItemTemplate au minimum. D'autres modèles optionnels décrits dans le tableau suivant permettent toutefois de personnaliser la présentation de la liste.
Nom du modèle | Description |
|---|
ItemTemplate | Définit le contenu et la disposition des éléments dans la liste. Ce modèle est obligatoire. |
AlternatingItemTemplate | S'il est défini, le contenu et la disposition d'éléments de remplacement (index impair commençant par zéro) sont alors déterminés. S'il n'est pas défini, ItemTemplate est utilisé. |
SeparatorTemplate | S'il est défini, la restitution s'effectue alors entre les éléments (et éléments de remplacement). S'il n'est pas défini, aucun séparateur n'est alors restitué. |
HeaderTemplate | S'il est défini, le contenu et la disposition de l'en-tête de liste sont alors déterminés. S'il n'est pas défini, aucun en-tête n'est alors restitué. |
FooterTemplate | S'il est défini, le contenu et la disposition du pied de page de liste sont alors déterminés. S'il n'est pas défini, aucun pied de page n'est alors restitué. |
Attention : |
|---|
Ce contrôle peut être utilisé pour afficher des entrées d'utilisateur qui peuvent inclure un script client nuisible. Recherchez dans toutes les informations envoyées par un client un script exécutable, des instructions SQL ou d'autre code avant de les afficher dans votre application. ASP.NET fournit une fonctionnalité de validation de demande d'entrée pour bloquer les scripts et le HTML dans les entrées d'utilisateur. Des contrôles serveur de validation sont également fournis pour valider les entrées d'utilisateur. Pour plus d'informations, consultez Syntaxe des contrôles serveur de validation. |
L'exemple de code suivant illustre comment utiliser deux contrôles Repeater simples sur une page. La propriété DataSource est utilisée pour spécifier la source de données pour le contrôle Repeater. Le premier contrôle Repeater affiche ses éléments dans un tableau, tandis que le deuxième contrôle Repeater affiche ses éléments dans une liste avec la virgule comme séparateur.
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Repeater Example</title>
<script language="VB" 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>
<h3>Repeater Example</h3>
<form id="form1" runat="server">
<b>Repeater1:</b>
<br />
<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>
<br />
<b>Repeater2:</b>
<br />
<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>
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Repeater Example</title>
<script language="C#" 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>
<h3>Repeater Example</h3>
<form id="form1" runat="server">
<b>Repeater1:</b>
<br />
<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>
<br />
<b>Repeater2:</b>
<br />
<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>
L'exemple de code suivant illustre comment utiliser la propriété DataSourceID pour spécifier la source de données pour un contrôle Repeater. La propriété DataSourceID a la valeur de la propriété ID du contrôle SqlDataSource utilisé pour récupérer les données. Lorsque la page est chargée, le contrôle Repeater est automatiquement lié à la source de données spécifiée par le contrôle SqlDataSource et les données sont affichées à l'utilisateur.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Repeater.DataSourceID Property Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>Repeater.DataSourceID Property Example</h3>
<asp:repeater id="Repeater1"
datasourceid="SqlDataSource1"
runat="server">
<headertemplate>
<table border="1">
<tr>
<td><b>Product ID</b></td>
<td><b>Product Name</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td> <%# Eval("ProductID") %> </td>
<td> <%# Eval("ProductName") %> </td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
<asp:sqldatasource id="SqlDataSource1"
connectionstring="<%$ ConnectionStrings:NorthWindConnection%>"
selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Repeater.DataSourceID Property Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>Repeater.DataSourceID Property Example</h3>
<asp:repeater id="Repeater1"
datasourceid="SqlDataSource1"
runat="server">
<headertemplate>
<table border="1">
<tr>
<td><b>Product ID</b></td>
<td><b>Product Name</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td> <%# Eval("ProductID") %> </td>
<td> <%# Eval("ProductName") %> </td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
<asp:sqldatasource id="SqlDataSource1"
connectionstring="<%$ ConnectionStrings:NorthWindConnection%>"
selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
System..::.Object
System.Web.UI..::.Control
System.Web.UI.WebControls..::.Repeater
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
.NET Framework
Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0
Référence
Autres ressources