Gewusst wie: Sortieren und Filtern von ADO.NET-Daten mit der BindingSource-Komponente in Windows Forms

Sie können die Sortier- und Filterfunktion des BindingSource-Steuerelements über die Sort-Eigenschaft und die Filter-Eigenschaft verfügbar machen. Einfaches Sortieren kann angewendet werden, wenn die zugrunde liegende Datenquelle eine IBindingList ist. Filtern und erweitertes Sortieren kann angewendet werden, wenn die Datenquelle eine IBindingListView ist. Für die Sort-Eigenschaft ist eine ADO.NET-Standardsyntax erforderlich: eine Zeichenfolge, die den Namen einer Datenspalte in der Datenquelle darstellt und auf die ASC oder DESC folgt, um festzulegen, ob die Liste in aufsteigender oder absteigender Reihenfolge sortiert wird. Sie können das erweiterte Sortieren oder das mehrspaltige Sortieren festlegen, indem Sie jede Spalte mit einem Kommatrennzeichen trennen. Die Filter-Eigenschaft verwendet einen Zeichenfolgenausdruck.

Tipp

Das Speichern vertraulicher Informationen wie Kennwörter innerhalb der Verbindungszeichenfolge kann die Sicherheit einer Anwendung beeinträchtigen. Die Windows-Authentifizierung bzw. integrierte Sicherheit stellt eine Möglichkeit der Steuerung des Datenbankzugriffs dar, die eine höhere Sicherheit gewährleistet. Weitere Informationen finden Sie unter Schützen von Verbindungsinformationen (ADO.NET).

So filtern Sie Daten mit der BindingSource-Komponente

  • Legen Sie die Filter-Eigenschaft auf den gewünschten Ausdruck fest.

    Im folgenden Codebeispiel handelt es sich bei diesem Ausdruck um einen Spaltennamen, gefolgt von dem für diese Spalte gewünschten Wert.

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

So sortieren Sie Daten mit der BindingSource-Komponente

  1. Legen Sie die Sort-Eigenschaft auf den gewünschten Spaltennamen fest, gefolgt von ASC oder DESC, um anzugeben, ob absteigend oder aufsteigend sortiert werden soll.

  2. Trennen Sie mehrere Spalten jeweils durch ein Komma.

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

Beispiel

Im folgenden Codebeispiel werden Daten aus der Tabelle Customers der Beispieldatenbank Northwind in ein DataGridView-Steuerelement geladen, und die angezeigten Daten werden gefiltert und sortiert.

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

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

        }

Kompilieren des Codes

Um dieses Beispiel auszuführen, fügen Sie den Code in ein Formular ein, das eine BindingSource mit dem Namen BindingSource1 und eine DataGridView mit dem Namen dataGridView1 enthält. Behandeln Sie das Load-Ereignis für das Formular, und rufen Sie in der Load-Ereignishandlermethode InitializeSortedFilteredBindingSource auf.

Siehe auch

Aufgaben

Gewusst wie: Installieren von Beispieldatenbanken

Referenz

Sort

Filter

Weitere Ressourcen

BindingSource-Komponente