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.