FAQ ASP.NET/VB.NET

FAQ ASP.NET/VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021
Sommaire→WebForms→Contrôles→Contrôles serveur (WebControl)→Contrôles standards→RepeaterIl 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 :
<asp:Repeater runat="server" ID="MonRepeater" OnItemDataBound="ItemDataBound">
<ItemTemplate>
<asp:Label runat="server" Text="<%#Container.DataItem %>" />
</ItemTemplate>
</asp:Repeater>MonRepeater.DataSource = New Integer() {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 :
Protected Sub ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.DataItem Mod 2 = 0 Then
e.Item.Visible = False
End If
End SubUne autre solution est d'intervenir au moment du databinding
<asp:Repeater runat="server" ID="MonRepeater" OnDataBinding="DataBindingRepeater">
Protected Sub DataBindingRepeater(ByVal sender As Object, ByVal e As EventArgs)
Dim r As Repeater = sender
r.DataSource = Array.FindAll(Of Integer)(r.DataSource, AddressOf filtre)
End Sub
Public Function filtre(ByVal i As Integer) As Boolean
Return i Mod 2 <> 0
End Function


