Procédure : trier et filtrer des données ADO.NET avec le composant BindingSource de Windows Forms

Vous pouvez exposer la fonctionnalité de tri et de filtrage du BindingSource contrôle par le biais des propriétés et Filter des Sort propriétés. Vous pouvez appliquer un tri simple lorsque la source de données sous-jacente est un IBindingList, et vous pouvez appliquer le filtrage et le tri avancé lorsque la source de données est un IBindingListView. La Sort propriété nécessite une syntaxe de ADO.NET standard : chaîne représentant le nom d’une colonne de données dans la source de données suivie ASC ou DESC pour indiquer si la liste doit être triée dans l’ordre croissant ou décroissant. Vous pouvez définir le tri avancé ou le tri à plusieurs colonnes en séparant chaque colonne par un séparateur de virgules. La Filter propriété prend une expression de chaîne.

Remarque

Le stockage d'informations sensibles (telles qu'un mot de passe) dans la chaîne de connexion peut affecter la sécurité de votre application. L'utilisation de l'authentification Windows (également appelée sécurité intégrée) offre un moyen plus sûr de contrôler l'accès à une base de données. Pour plus d’informations, consultez Protection des informations de connexion.

Pour filtrer des données avec BindingSource

  • Définissez la propriété sur l’expression Filter souhaitée.

    Dans l’exemple de code suivant, l’expression est un nom de colonne suivi de la valeur souhaitée pour la colonne.

BindingSource1.Filter = "ContactTitle='Owner'";
BindingSource1.Filter = "ContactTitle='Owner'"

Pour trier des données avec BindingSource

  1. Définissez la Sort propriété sur le nom de colonne que vous souhaitez suivre ASC ou DESC pour indiquer l’ordre croissant ou décroissant.

  2. Séparez plusieurs colonnes avec une virgule.

BindingSource1.Sort = "Country DESC, Address ASC";
BindingSource1.Sort = "Country DESC, Address ASC"

Exemple

L’exemple de code suivant charge les données de la table Customers de l’exemple de base de données Northwind dans un DataGridView contrôle et filtre et trie les données affichées.

private void InitializeSortedFilteredBindingSource()
{
    // Create the connection string, data adapter and data table.
    SqlConnection connectionString =
         new SqlConnection("Initial Catalog=Northwind;" +
         "Data Source=localhost;Integrated Security=SSPI;");
    SqlDataAdapter customersTableAdapter =
        new SqlDataAdapter("Select * from Customers", connectionString);
    DataTable customerTable = new DataTable();

    // Fill the adapter with the contents of the customer table.
    customersTableAdapter.Fill(customerTable);

    // Set data source for BindingSource1.
    BindingSource1.DataSource = customerTable;

    // Filter the items to show contacts who are owners.
    BindingSource1.Filter = "ContactTitle='Owner'";

    // Sort the items on the company name in descending order.
    BindingSource1.Sort = "Country DESC, Address ASC";

    // Set the data source for dataGridView1 to BindingSource1.
    dataGridView1.DataSource = BindingSource1;
}
Private Sub InitializeSortedFilteredBindingSource()

    ' Create the connection string, data adapter and data table.
    Dim connectionString As New SqlConnection("Initial Catalog=Northwind;" & _
        "Data Source=localhost;Integrated Security=SSPI;")
    Dim customersTableAdapter As New SqlDataAdapter("Select * from Customers", _
        connectionString)
    Dim customerTable As New DataTable()

    ' Fill the adapter with the contents of the customer table.
    customersTableAdapter.Fill(customerTable)

    ' Set data source for BindingSource1.
    BindingSource1.DataSource = customerTable

    ' Filter the items to show contacts who are owners.
    BindingSource1.Filter = "ContactTitle='Owner'"
    ' Sort the items on the company name in descending order.
    BindingSource1.Sort = "Country DESC, Address ASC"

    ' Set the data source for dataGridView1 to BindingSource1.
    dataGridView1.DataSource = BindingSource1

   
End Sub

Compilation du code

Pour exécuter cet exemple, collez le code dans un formulaire qui contient un BindingSource nom BindingSource1 et un DataGridView nom dataGridView1. Gérez l’événement Load pour le formulaire et appelez InitializeSortedFilteredBindingSource dans la méthode du gestionnaire d’événements de chargement.

Voir aussi