Comment : filtrer les données d'une vue
Cet exemple montre comment filtrer des données dans une vue.
Exemple
Pour créer un filtre, définissez une méthode qui fournit la logique de filtrage. La méthode est utilisée comme rappel et accepte un paramètre de type object
. La méthode suivante retourne tous les Order
objets dont la filled
propriété est définie sur « Non », en filtrant le reste des objets.
public bool Contains(object de)
{
Order order = de as Order;
//Return members whose Orders have not been filled
return(order.Filled== "No");
}
Public Function Contains(ByVal de As Object) As Boolean
Dim order1 As Order = TryCast(de, Order)
Return (order1.Filled Is "No")
End Function
Vous pouvez ensuite appliquer le filtre, comme illustré dans l’exemple suivant. Dans cet exemple, myCollectionView
est un ListCollectionView objet.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Pour annuler le filtrage, vous pouvez définir la Filter propriété sur null
:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
Pour plus d’informations sur la création ou l’obtention d’une vue, consultez Obtenir la vue par défaut d’une collection de données. Pour obtenir l’exemple complet, consultez Tri et filtrage d’éléments dans un exemple d’affichage.
Si votre objet d’affichage provient d’un objet, vous appliquez une CollectionViewSource logique de filtrage en définissant un gestionnaire d’événements pour l’événement Filter . Dans l’exemple suivant, listingDataView
est une instance de CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
L’exemple suivant montre l’implémentation de l’exemple ShowOnlyBargainsFilter
de gestionnaire d’événements de filtre. Ce gestionnaire d’événements utilise la Accepted propriété pour filtrer les AuctionItem
objets dont la CurrentPrice
valeur est de 25 $ ou supérieure.
private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
AuctionItem product = e.Item as AuctionItem;
if (product != null)
{
// Filter out products with price 25 or above
if (product.CurrentPrice < 25)
{
e.Accepted = true;
}
else
{
e.Accepted = false;
}
}
}
Private Sub ShowOnlyBargainsFilter(ByVal sender As Object, ByVal e As FilterEventArgs)
Dim product As AuctionItem = CType(e.Item, AuctionItem)
If Not (product Is Nothing) Then
'Filter out products with price 25 or above
If product.CurrentPrice < 25 Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
Voir aussi
.NET Desktop feedback