Comment : filtrer les données d'une vue

Mise à jour : novembre 2007

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é Orderfilled 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 de 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;
        }
    }
}

Pour obtenir l'exemple complet, consultez Liaison de données, démonstration.

Voir aussi

Tâches

Comment : trier des données dans une vue

Concepts

Vue d'ensemble de la liaison de données

Référence

CanFilter

CustomFilter

Autres ressources

Exemples de liaisons de données

Rubriques Comment relatives aux liaisons de données