Partager via


Tri et filtrage de données à l'aide d'un DataView

Le DataView offre différentes possibilités pour le tri et le filtrage des données d'un DataTable :

  • En utilisant la propriété Sort, vous pouvez spécifier un ordre de tri en fonction d'une ou de plusieurs colonnes et inclure des paramètres ASC (ordre croissant) et DESC (ordre décroissant).

  • Vous pouvez utiliser la propriété ApplyDefaultSort pour créer automatiquement un ordre de tri, croissant, basé sur la ou les colonnes clés primaires de la table. ApplyDefaultSort est applicable uniquement lorsque la propriété Sort est une référence null ou une chaîne vide et lorsqu'une clé primaire est définie dans la table.

  • En utilisant la propriété RowFilter, vous pouvez spécifier des sous-ensembles de lignes en fonction des valeurs de leurs colonnes. Pour plus de détails sur les expressions pouvant être utilisées pour la propriété RowFilter, consultez les informations de référence relatives à la propriété Expression de la classe DataColumn.

    Si vous souhaitez retourner les résultats d'une requête particulière exécutée sur les données, au lieu de fournir une vue dynamique d'un sous-ensemble des données, vous obtiendrez de meilleures performances en utilisant les méthodes Find ou FindRows du DataView plutôt qu'en paramétrant la propriété RowFilter. Le paramétrage de la propriété RowFilter entraîne une nouvelle génération de l'index des données, ce qui accroît la charge pour votre application et, par voie de conséquence, fait baisser les performances. L'utilisation de la propriété RowFilter est optimale dans une application de liaison de données où un contrôle lié affiche des résultats filtrés. Les méthodes Find et FindRows mettent à jour l'index en cours sans qu'il soit nécessaire de le reconstruire. Pour plus d'informations sur les méthodes Find et FindRows, consultez Recherche dans un DataView.

  • À l'aide de la propriété RowStateFilter, vous pouvez spécifier les versions de lignes à afficher. Le DataView gère implicitement la version d'une ligne à exposer en fonction du RowState de la ligne sous-jacente. Par exemple, si la propriété RowStateFilter a la valeur DataViewRowState.Deleted, le DataView expose la version d'origine de toutes les lignes supprimées, car ces lignes n'ont plus de version actuelle. Vous pouvez déterminer quelle version d'une ligne est exposée à l'aide de la propriété RowVersion du DataRowView.

    Le tableau suivant présente les options de DataViewRowState.

    DataViewRowState Description
    CurrentRows Version actuelle de toutes les lignes inchangées, ajoutées et modifiées. Il s'agit de l'option par défaut.
    Added Version actuelle de toutes les lignes ajoutées.
    Deleted Version d'origine de toutes les lignes supprimées.
    ModifiedCurrent Version actuelle de toutes les lignes modifiées.
    ModifiedOriginal Version d'origine de toutes les lignes modifiées.
    None Aucune ligne.
    OriginalRows Version d'origine de toutes les lignes inchangées, modifiées et supprimées.
    Unchanged Version actuelle de toutes les lignes inchangées.

Pour plus d'informations sur les états et versions de ligne, consultez États et versions de ligne.

L'exemple de code suivant crée une vue faisant apparaître tous les produits pour lesquels la quantité en stock est inférieure ou égale au niveau de passage d'une nouvelle commande, triés d'abord par ID de fournisseur, puis par nom de produit.

Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
                                        "UnitsInStock <= ReorderLevel", _
                                        "SupplierID, ProductName", _
                                        DataViewRowState.CurrentRows)
[C#]
DataView prodView = new DataView(prodDS.Tables["Products"],
                                 "UnitsInStock <= ReorderLevel",
                                 "SupplierID, ProductName",
                                 DataViewRowState.CurrentRows);

Voir aussi

Création et utilisation de DataViews | DataViewRowState, énumération | DataColumn.Expression, propriété | DataTable, classe | DataView, classe