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

È possibile esporre la funzionalità di ordinamento e filtro del BindingSource controllo tramite le Sort proprietà e Filter . È possibile applicare un ordinamento semplice quando l'origine dati sottostante è un IBindingListoggetto ed è possibile applicare filtri e ordinamento avanzato quando l'origine dati è un IBindingListViewoggetto . La Sort proprietà richiede ADO.NET sintassi standard: stringa che rappresenta il nome di una colonna di dati nell'origine dati seguita da ASC o DESC per indicare se l'elenco deve essere ordinato in ordine crescente o decrescente. È possibile impostare l'ordinamento avanzato o l'ordinamento a più colonne separando ogni colonna con un separatore di virgole. La Filter proprietà accetta un'espressione stringa.

Nota

L'archiviazione delle informazioni riservate, ad esempio la password, nella stringa di connessione può avere implicazioni sulla sicurezza dell'applicazione. L'autenticazione di Windows, detta anche sicurezza integrata, consente di controllare l'accesso a un database in modo più sicuro. Per altre informazioni, vedere Protezione delle informazioni di connessione.

Per filtrare i dati con BindingSource

  • Impostare la proprietà sull'espressione Filter desiderata.

    Nell'esempio di codice seguente, 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 BindingSource

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

  2. Separare più colonne con una virgola.

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

Esempio

Nell'esempio di codice seguente vengono caricati dati dalla tabella Customers del database di esempio Northwind in un DataGridView controllo e vengono filtrati e ordinati i dati visualizzati.

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

Compilazione del codice

Per eseguire questo esempio, incollare il codice in un modulo contenente un BindingSource oggetto denominato BindingSource1 e un DataGridView denominato dataGridView1. Gestire l'evento Load per il form e chiamare InitializeSortedFilteredBindingSource nel metodo del gestore eventi di caricamento.

Vedi anche