Procedura: ordinare e filtrare i dati ADO.NET con il componente BindingSource Windows Form

È possibile esporre la funzionalità di ordinamento e filtraggio del controllo BindingSource mediante le proprietà Sort e Filter. È possibile applicare l'ordinamento semplice quando l'origine dati sottostante è un'interfaccia IBindingList e applicare il filtro e l'ordinamento avanzato quando l'origine dati è un'interfaccia IBindingListView. La proprietà Sort richiede una sintassi ADO.NET standard, ovvero una stringa che rappresenta il nome di una colonna di dati nell'origine dati seguito da ASC o DESC per indicare se l'ordine dell'elenco deve essere crescente o decrescente. È possibile impostare un ordinamento avanzato o a più colonne separando ogni colonna con un separatore virgola. La proprietà Filter accetta un'espressione stringa.

Nota

La memorizzazione delle informazioni riservate, ad esempio la password, nella stringa di connessione può compromettere la sicurezza dell'applicazione. L'autenticazione di Windows, detta anche sicurezza integrata, consente di controllare in modo più sicuro l'accesso a un database. Per ulteriori informazioni, vedere Protezione delle informazioni di connessione (ADO.NET).

Per filtrare i dati con il BindingSource

  • Impostare la proprietà Filter sull'espressione desiderata.

    Nell'esempio di codice riportato di seguito l'espressione è un nome di colonna seguito dal valore desiderato per la colonna.

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

Per ordinare i dati con il BindingSource

  1. Impostare la proprietà Sort sul nome di colonna desiderato seguito da ASC o DESC per indicare l'ordine crescente o decrescente.

  2. Separare le colonne multiple con una virgola.

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

Esempio

Nell'esempio di codice riportato di seguito vengono caricati i dati della tabella Customers del database di esempio Northwind in un controllo DataGridView e quindi vengono filtrati e ordinati i dati visualizzati.

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;

        }

Compilazione del codice

Per eseguire l'esempio, incollare il codice in un form contenente un BindingSource denominato BindingSource1 e un DataGridView denominato dataGridView1. Gestire l'evento Load per il form e chiamare InitializeSortedFilteredBindingSource nel metodo per la gestione eventi Load.

Vedere anche

Attività

Procedura: installare database di esempio

Riferimenti

Sort

Filter

Altre risorse

Il componente BindingSource