IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/C#

FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireWebFormsContrôlesContrôles serveur (WebControl)Contrôles standardsRepeater

Il peut arriver qu'on ait besoin de faire un filtre sur une datasource de repeater mais qu'on ne puisse pas toujours filtrer cette source en amont. Dans ce cas, on peut très bien faire notre filtre au moment où le repeater se construit.
Soit un repeater tout bete :

 
Sélectionnez
<asp:Repeater runat="server" ID="MonRepeater" OnItemDataBound="ItemDataBound"> 
	<ItemTemplate> 
		<asp:Label runat="server" Text="<%#Container.DataItem %>" /> 
	</ItemTemplate> 
</asp:Repeater>
 
Sélectionnez
MonRepeater.DataSource = new int[] {1, 2, 3, 4, 5, 6, 7}; 
MonRepeater.DataBind();

Il suffit d'agir sur le ItemDataBound et de masquer l'élément.
Ici par exemple, je n'affiche que les nombres impairs :

 
Sélectionnez
protected void ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
	if ((int)e.Item.DataItem % 2 == 0) 
	{ 
		e.Item.Visible = false; 
	} 
}

Une autre solution est d'intervenir au moment du databinding

 
Sélectionnez
<asp:Repeater runat="server" ID="MonRepeater" OnDataBinding="DataBindingRepeater">

protected void DataBindingRepeater(object sender, EventArgs e) 
{ 
	Repeater r = (Repeater)sender; 
	r.DataSource = Array.FindAll((int[])r.DataSource, delegate(int i) 
	{ 
		return i % 2 != 0; 
	}); 
}
Créé le 10 mars 2008  par nico-pyright(c)

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.