Compartilhar via


Como classificar e filtrar dados ADO.NET com o componente BindingSource do Windows Forms

Você pode expor a capacidade de classificação e filtragem do controle BindingSource por meio das propriedades Sort e Filter. Você pode aplicar uma classificação simples quando a fonte de dados subjacente é uma IBindingListe pode aplicar filtragem e classificação avançada quando a fonte de dados é uma IBindingListView. A propriedade Sort requer sintaxe de ADO.NET padrão: uma cadeia de caracteres que representa o nome de uma coluna de dados na fonte de dados seguida por ASC ou DESC para indicar se a lista deve ser classificada em ordem crescente ou decrescente. Você pode definir classificação avançada ou classificação de várias colunas separando cada coluna com um separador de vírgula. A propriedade Filter usa uma expressão de cadeia de caracteres.

Observação

Armazenar informações confidenciais, como uma senha, dentro da cadeia de conexão pode afetar a segurança do aplicativo. Usar a Autenticação do Windows (também conhecida como segurança integrada) é uma maneira mais segura de controlar o acesso a um banco de dados. Para obter mais informações, consulte Protegendo informações de conexão.

Para filtrar dados com o BindingSource

  • Defina a propriedade Filter para a expressão que você deseja.

    No exemplo de código a seguir, a expressão é um nome de coluna seguido pelo valor desejado para a coluna.

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

Para classificar dados com o BindingSource

  1. Defina a propriedade Sort como o nome da coluna que você deseja seguir por ASC ou DESC para indicar a ordem crescente ou decrescente.

  2. Separe várias colunas com uma vírgula.

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

Exemplo

O exemplo de código a seguir carrega dados da tabela Customers do banco de dados de exemplo Northwind em um controle DataGridView, filtra e classifica os dados exibidos.

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

Compilando o código

Para executar este exemplo, cole o código em um formulário que contém um BindingSource chamado BindingSource1 e um DataGridView chamado dataGridView1. Manipule o evento Load para o formulário e chame InitializeSortedFilteredBindingSource no método do manipulador de eventos de carga.

Consulte também