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 por meio das BindingSourceSort propriedades e Filter . Você pode aplicar classificação simples quando a fonte de dados subjacente é um , e pode aplicar filtragem e classificação avançada quando a fonte de dados é um IBindingListIBindingListView. A Sort propriedade 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 para indicar se a lista deve ser classificada em ordem crescente ou DESC decrescente. Você pode definir a classificação avançada ou a classificação em várias colunas separando cada coluna com um separador de vírgula. A Filter propriedade usa uma expressão de cadeia de caracteres.

Observação

O armazenamento das informações confidenciais, como uma senha, dentro da cadeia de conexão pode afetar a segurança do aplicativo. O uso da 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.

Filtrar os dados com o BindingSource

  • Defina a Filter propriedade como expressão desejada.

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

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

Classificar os dados com o BindingSource

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

  2. Separe múltiplas 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 DataGridView controle e 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 nome e um BindingSourceDataGridView nome BindingSource1dataGridView1. Manipule o evento para o Load formulário e chame InitializeSortedFilteredBindingSource no método load event handler.

Confira também