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

Sie können die Sortier- und Filterfunktionalität des BindingSource-Steuerelements über die Sort- und Filter-Eigenschaften verfügbar machen. Sie können einfache Sortierung anwenden, wenn es sich bei der zugrunde liegenden Datenquelle um IBindingList handelt, und Sie können Filterung und erweiterte Sortierung anwenden, wenn die Datenquelle eine IBindingListView ist. Die Sort-Eigenschaft erfordert standardmäßige ADO.NET-Syntax: eine Zeichenfolge, die den Namen einer Datenspalte in der Datenquelle angibt, gefolgt von ASC oder DESC, um anzugeben, ob die Liste in aufsteigender oder absteigender Reihenfolge sortiert werden soll. Sie können erweiterte Sortierung oder mehrspaltige Sortierung festlegen, indem Sie jede Spalte mit einem Kommatrennzeichen trennen. Die Filter-Eigenschaft verwendet einen Zeichenfolgenausdruck.

Hinweis

Das Speichern vertraulicher Informationen (z. B. eines Kennworts) innerhalb der Verbindungszeichenfolge kann die Sicherheit einer Anwendung beeinträchtigen. Der Zugriff auf eine Datenbank lässt sich mithilfe der Windows-Authentifizierung (wird auch als integrierte Sicherheit bezeichnet) sicherer steuern. Weitere Informationen finden Sie unter Protecting Connection Information (Schützen von Verbindungsinformationen).

So filtern Sie Daten mit der BindingSource

  • Legen Sie bei der Filter-Eigenschaft die gewünschte Farbe fest.

    Im folgenden Codebeispiel ist der Ausdruck ein Spaltenname gefolgt von einem Wert, den Sie für die Spalte benötigen.

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

So filtern Sie Daten mit der BindingSource

  1. Legen Sie die Sort-Eigenschaft auf den Spaltennamen fest, dem Sie ASC oder DESC folgen lassen möchten, um die aufsteigende oder absteigende Reihenfolge anzuzeigen.

  2. Trennen Sie mehrere Spalten mit einem Komma.

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

Beispiel

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

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

Kompilieren des Codes

Um dieses Beispiel auszuführen, fügen Sie den Code in ein Formular ein, das einen BindingSource als BindingSource1 benannten und einen DataGridView als dataGridView1 benannten enthält. Behandeln Sie das Load-Ereignis für das Formular und rufen Sie InitializeSortedFilteredBindingSource in der geladenen Ereignismethode der Handler auf.

Weitere Informationen