Share via


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 une 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 objets dont la propriété Order filled a la valeur "Non", et filtre le reste des objets.

Public Function Contains(ByVal de As Object) As Boolean
    Dim order1 As Order = TryCast(de, Order)
    Return (order1.Filled Is "No")
End Function
public bool Contains(object de)
{
    Order order = de as Order;
    //Return members whose Orders have not been filled
    return(order.Filled== "No");
}

Vous pouvez ensuite appliquer le filtre, comme illustré dans l'exemple suivant. Dans cet exemple, myCollectionView est un objet ListCollectionView.

myCollectionView.Filter = new Predicate<object>(Contains);

Pour annuler le filtrage, vous pouvez affecter la valeur null à la propriété Filter :

myCollectionView.Filter = null;

Pour plus d'informations sur la création ou l'obtention d'une vue, consultez Comment : 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 une vue, exemple.

Si votre objet de vue provient d'un objet CollectionViewSource, vous pouvez appliquer la 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);

L'exemple suivant illustre l'implémentation du gestionnaire d'événements de filtre ShowOnlyBargainsFilter. Ce gestionnaire d'événements utilise la propriété Accepted pour filtrer des objets AuctionItem dont le CurrentPrice est de $25 ou plus.

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;
        }
    }
}

Voir aussi

Tâches

Comment : trier des données dans une vue

Référence

CanFilter

CustomFilter

Concepts

Vue d'ensemble de la liaison de données

Autres ressources

Rubriques "Comment" relatives aux liaisons de données