Quick Tips: Busca em um ListView
Nesta quick tip veremos como realizar buscas em um listView.
Insira um botão e um ListView no formulário e altere a propriedade View para Details.
Insira também um textBox e um botão Buscar, como na figura abaixo.
Declare uma classe Cliente que será quem exibiremos e buscaremos na listView.
public class Cliente
{
public int Codigo { get; set; }
public String Nome { get; set; }
public String Bairro { get; set; }
}
Abaixo está o código para carregar a lista de clientes dinamicamente na ListView.
private void BtnLoad_Click(object sender, EventArgs e)
{
listView1.Groups.Add("Realengo","Realengo");
//Cria lista de clientes
List<Cliente> lista = new List<Cliente>();
//Cria, alimenta e adiciona clientes à lista
Cliente c = new Cliente();
c.Codigo = 1;
c.Nome = "Ricardo";
c.Bairro = "Recreio";
lista.Add(c);
c = new Cliente();
c.Codigo = 2;
c.Nome = "Julia";
c.Bairro = "Barra";
lista.Add(c);
c = new Cliente();
c.Codigo = 3;
c.Nome = "Givonilda";
c.Bairro = "Recreio";
lista.Add(c);
c = new Cliente();
c.Codigo = 4;
c.Nome = "Maria";
c.Bairro = "Irajá";
lista.Add(c);
//Recupera lista de propriedades da classe Cliente
PropertyInfo[] props = typeof(Cliente).GetProperties();
//Percorre lista de propriedades da classe Cliente
foreach (PropertyInfo p in props)
{
//Cria uma nova coluna
ColumnHeader col = new ColumnHeader();
//Adiciona ao listView
listView1.Columns.Add(col);
//Altera o text atribuindo o nome da propriedade de Cliente
col.Text = p.Name;
//Ajusta o tamanho da coluna
col.Width = 100;
}
//Percorre lista de clientes
foreach (Cliente cliente in lista)
{
//Adiciona um item no ListView
ListViewItem item = listView1.Items.Add(cliente.Codigo.ToString());
//Adicoina os subItems
item.SubItems.Add(cliente.Nome);
item.SubItems.Add(cliente.Bairro);
}
}
Código do botão Buscar
private void BtnBuscar_Click(object sender, EventArgs e)
{
//verifica se tem items na lista
if(listView1.Items.Count > 0){
//procura o item pelo texto
ListViewItem foundItem =
listView1.FindItemWithText(txtBusca.Text, true, 0, true);
//verifica se o item foi encontrado
if (foundItem != null)
{
//Verifica se não existe o grupo Localizado
//senão tiver cria grupo para destacar o item localizado
if(listView1.Groups["Localizado"]==null)
listView1.Groups.Add("Localizado","Localizado");
//se o grupo possuir items entao remove o mesmo do grupo
//para que ele volte ao grupo default
if (listView1.Groups["Localizado"].Items.Count > 0)
listView1.Groups["Localizado"].Items[0].Group = null;
//aloca o item encontrado ao grupo localizado
foundItem.Group = listView1.Groups["Localizado"];
}
}
}
Resultado da execução da rotina.
É isso aí pessoal, vou ficando por aqui.
Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.