Quick Tip: Agrupamento em um ListView
Nesta quick tip veremos como criar grupos em um listView.
Insira um botão e um ListView no formulário e altere a propriedade View para Details.
Declare uma classe Cliente que será quem exibiremos 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)
{
//Verifica se existe um grupo para o bairro do cliente atual do forEach
//Se não existir cria um com o nome do bairro
if (listView1.Groups[cliente.Bairro] == null)
listView1.Groups.Add(cliente.Bairro, cliente.Bairro);
//Adiciona um item em branco no listView
ListViewItem item = listView1.Items.Add(cliente.Codigo.ToString());
item.SubItems.Add(cliente.Nome);
item.SubItems.Add(cliente.Bairro);
//Aloca o item no seu respecitvo grupo
item.Group = listView1.Groups[cliente.Bairro];
}
}
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.