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:
Uma string representando o nome da coluna de dados na fonte de dados seguida pelas palavras ASC ou DESC para indicar se a ordenação será ascendente ou descendente. Para operações de ordenação avançadas você pode separar cada coluna com virgula.
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.
A propriedade Filter requer uma expressão String contendo o critério para efetuar o filtro dos dados.
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()
TableAdapterClientes.Fill(tabelaCliente)
BindingSource1.DataSource = tabelaCliente
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: