VB .NET - Filtrando dados em um ListBox (para novatos)
Neste artigo vamos rever os conceitos relacionados com o componentes ListBox, DataTables e DataViews e mostrar como filtrar dados em um controle ListBox na linguagem VB .NET. |
O controle ListBox é muito versátil e muito utilizado para exibir informações em aplicações Windows Forms usando a linguagem VB .NET.
Eu já escrevi dezenas de artigos sobre este controle(veja as referências), e, hoje volto ao assunto mostrando como filtrar dados em um ListBox.
Este é um artigo muito simples indicado para quem esta iniciando com a linguagem VB .NET.
Recursos usados :
Filtrando dados em um ListBox
Abra o VS Community 2015 e clique em New Project;
A seguir selecione Visual Basic -> Windows -> Windows Forms Application;
Informe o nome Filtrando_ListBox_VBNET e clique no botão OK;
No formulário padrão form1.vb vamos incluir os seguintes controles:
1 TextBox - TextBox1
1 ListBox - ListBox1
Agora no formulário form1.vb vamos declarar as variáveis a seguir:
Private
dtPaises As New DataTable()Estamos criando uma instância da classe DataTable() para preencher com os nomes dos países.
A classe SortedDictionary() representa uma coleção de pares chave/valor que é ordenado pela chave.
A seguir vamos criar um método chamado carregaDados() onde criamos a coluna Pais no DataTable() e incluímos os nomes dos países que desejamos exibir no ListBox:
Private Function carregaDados() As DataTable dtPaises.Columns.Add("Pais") dtPaises.Rows.Add("Argentina") dtPaises.Rows.Add("Brasil") dtPaises.Rows.Add("Bolívia") dtPaises.Rows.Add("Chile") dtPaises.Rows.Add("China") dtPaises.Rows.Add("Dinamarca") dtPaises.Rows.Add("França") dtPaises.Rows.Add("Inglaterra") dtPaises.Rows.Add("India") dtPaises.Rows.Add("Japão") dtPaises.Rows.Add("Lituânia") dtPaises.Rows.Add("Marrocos") dtPaises.Rows.Add("Nicaragua") dtPaises.Rows.Add("Omã") dtPaises.Rows.Add("Peru") dtPaises.Rows.Add("Quênia") dtPaises.Rows.Add("Romênia") dtPaises.Rows.Add("Suiça") dtPaises.Rows.Add("Turquia") dtPaises.Rows.Add("Ucrânia") dtPaises.Rows.Add("USA") dtPaises.Rows.Add("Venezuela") Return dtPaises End Function |
No evento Load do formulário vamos chamar o método carregaDados() e atribuir o seu retorno à propriedade DataSource do controle ListBox.
Vamos também informar ao controle que desejamos exibir os valores da coluna Pais do DataTable :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ListBox1.DataSource = carregaDados() ListBox1.DisplayMember = "Pais" End Sub |
Agora vamos usar o evento TextChanged do controle TextBox e montar um filtro usando a propriedade RowFilter do controle DataView usando uma consulta com a cláusula LIKE e o texto que o usuário digitou no TextBox:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim dvPaises As DataView = dtPaises.DefaultView
dvPaises.RowFilter = "Pais LIKE '%" & TextBox1.Text & "%'"
End Sub
|
A propriedade RowFilter define a expressão usada para filtrar quais linhas serão exibidas em DataView.
Executando o projeto e digitando algum texto na caixa de texto iremos obter o seguinte resultado:
Quer saber como exibir em um ListBox ou Combobox uma lista dos países usando os recursos do sistema ?
Veja este vídeo : Carregando uma lista de Países usando o namespace
Pegue o projeto completo aqui : Filtrando_ListBox_VBNET.zip
Porque a lei foi dada por Moisés; a
graça e a verdade vieram por Jesus Cristo.
Deus nunca foi visto por alguém. O Filho unigênito, que está no seio do Pai,
esse o revelou.
João 1:17,18
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Preenchendo Combobox e ListBox com dados relacionados ...(vídeo aula)