VB.NET - Filtrando e Ordenando com BindingSource


O componente BindingSource possui muitas utilidades, uma delas é simplificar a vinculação de controles em um formulário Windows com a  fonte de  dados pois ele prove o gerenciamento da concorrência, a notificação de mudanças e outros serviços entre os controles do formulário e a fonte de dados. Para usar este recurso basta você vincular o componente BindingSource a sua fonte de dados usando a propriedade DataSource.

Podemos fazer a vinculação do BindingSource qualquer um dos seguintes objetos/Interfaces:

 

Object

-   System.Type

-   IEnumerable

-   ICollection

-   IList

-   IListSource

-   IBindingList

-   IBindingListView

Para um cenário mais complexo de vinculação de dados você pode definir a propriedade DataMember para uma coluna específica ou uma lista  na fonte de dados. Toda a posterior interação com os dados é alcançada com chamadas ao componente BindingSource. A navegação e atualização da fonte de dados é conseguida através de métodos como : MoveNext, MoveLast e Remove.  Operações de filtragem e ordenação de dados são feitas através das propriedades Filter e Sort.

Este artigo foca exatamente a ordenação e a filtragem de dados usando componente BindingSource.

Nota: Para saber mais sobre o componente BindingSource leia o artigo : VB.NET - BindingSource e DataGridView.

Ordenando com BindingSource : Usando a propriedade Sort.

A propriedade Sort requer a utilização da sintaxe padrão ADO.NET: 

Para ordenar dados com BindingSource defina a propriedade Sort para o nome da coluna desejada seguida por ASC ou DESC, e, se houver mais de uma coluna separe-as usando vírgula.

Ex:  BindingSource1.Sort = "Codigo, ASC, Nome DESC"

Filtrando com BindingSource : Usando a propriedade Filter.

Para filtrar dados com o BindingSource defina a propriedade Filter para a expressão contendo o critério desejado.

Ex: BindingSource1.Filter = "Nome = 'Macoratti'"

Exemplo Prático

Vejamos a seguir um exemplo concreto para materializar os conceitos discutidos. Neste exemplo estamos carregando os dados da tabela Customers do banco de dados Northwind.mdb em um controle DataGridView para em seguida efetuar a ordenação e filtro dos dados para posterior exibição.

1- Inicie o Visual Basic 2005 (estou usando a versão Express Edition) e crie um projeto chamado BindingSourceFiltroOrdenacao

2- N formulário padrão form1.vb, inclua um componente DataGridView e um componente BindingSource

Defina no evento Load do formulário uma chamada a rotina ordenarFiltrarBindingSource() :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

ordenarFiltrarBindingSource()

End Sub

Agora inclua a rotina ordenarFiltrarBindingSource() no formulário com o seguinte código :

Private Sub ordenarFiltrarBindingSource()
 

'define a string de conexão com a fonte de dados Northwind.mdb

Dim strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=d:\teste\Northwind.mdb"


' Cria uma string de conexão , um data adapter e um data table.

Dim connectionString As New OleDbConnection(strConn)

Dim TableAdapterClientes As New OleDbDataAdapter("Select CompanyName, ContactName, City, Country from Customers", connectionString)

Dim tabelaCliente As New DataTable()


' preenche o adapter com o conteúdo da tabela Customers.

TableAdapterClientes.Fill(tabelaCliente)


' Define a fonte de dados para o BindingSource1.

BindingSource1.DataSource = tabelaCliente


' Filtra os itens para mostrar somente os paises igual a Brasil

BindingSource1.Filter = "Country='Brazil'"


' Ordena os itens pela cidade ascendente e nome da companhia em ordem descendente

BindingSource1.Sort = "City ASC, CompanyName DESC, "


' Define a fonte de dados para o dataGridView1 e o BindingSource1.

DataGridView1.DataSource = BindingSource1

 

End Sub

Ao executar o projeto teremos com resultado a seguinte tela:

Referências: http://msdn2.microsoft.com/en-us/ya3sah92.aspx

Pegue o código do exemplo aqui : BindingSourceFiltroOrdenacao.zip ( 55 Kb)

Até o próximo artigo ... 

Rom 7:4 Assim também vós, meus irmãos, fostes mortos quanto à lei mediante o corpo de Cristo, para pertencerdes a outro, àquele que ressurgiu dentre os mortos a fim de que demos fruto para Deus.

Rom 7:5 Pois, quando estávamos na carne, as paixões dos pecados, suscitadas pela lei, operavam em nossos membros para darem fruto para a morte.

Rom 7:6 Mas agora fomos libertos da lei, havendo morrido para aquilo em que estávamos retidos, para servirmos em novidade de espírito, e não na velhice da letra.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti