Olá pessoal, neste artigo irei mostrar como agrupar os dados do GridView usando o TemplateField, editor de Templates próprio do Visual Studio. Acompanhem:

Como dito anteriormente, iremos fazer o agrupamento do GridView, sendo que teremos 1 campo que será o grupo, contendo os campos do 2º GridView.

Para este artigo, usei o banco de exemplo da Microsoft, Northwind. Para quem quiser baixá-lo, é só seguir as instruções neste link ou neste artigo.

Iremos fazer uma listagem de Categoria e, a para cada categoria, teremos os respectivos Produtos agrupados.

Abra o Visual Studio, vá em File > New Project (CTRL + SHIFT + N), escolha o template ASP.NET Web Application, dê o nome AgrupamentoGridView e clique em OK.

Neste exemplo iremos fazer duas consultas ao banco, pode não ser o mais indicado para sua aplicação o fato de ter que consultar o banco duas vezes, pois pode atrapalhar o desempenho da mesma.

Arraste um GridView para a Default.aspx, clique na SmartTag, altere o formato dele e clique em Choose Data Source: e em New data source..., para fazermos a conexão com o banco de dados NorthWind.

OBS: Não entrarei em detalhes sobre a conexão com o banco, pois esse não é o intuito do artigo, já que em outro artigo abordo este assunto com mais detalhes.

Nesta 1ª consulta ao banco iremos retornar o ID e o Nome da Categoria, então na janela que pede para você configurar a instrução de Select, escolha a tabela Categories e as colunas CategoryID e CategoryName, como a imagem abaixo nos mostra:


Na próxima janela clique em Test Query, sua consulta deverá retornar oito categorias. Clique em Finish e aguarde.

Volte a SmartTag de nosso GridView e clique em Edit Columns. Na janela que se abre, em Selected fields, clique em CategoryName e o remova clicando no X ao lado, clique em CategoryID, e o converta para TemplateField clicando no lado direito em Convert this field into a TemplateField:


Agora nosso ID é um TemplateField e podemos editá-lo adicionando os controles que precisarmos.

Ainda na SmartTag clique em Edit Templates e, no editor de templates que se abre, adicione um Label, que será o Nome da Categoria (por isso o excluímos anteriormente no Edit Columns). Agora deixe este Label como negrito para que o mesmo seja destacado, e clique em Edit DataBindings, para o relacionarmos ao Nome da Categoria:


Agora arraste abaixo dos Labels um GridView que nos retornará os Produtos relativos à respectiva categoria. Crie outra conexão com o banco NorthWind nesse novo GridView e altere o Select Statement para o de baixo:


Temos que fazer a vinculação do Produto com a Categoria. Para isso, nesta mesma janela de cima, clique no botão WHERE... e altere os campos para o da imagem a seguir:


Desta forma fizemos um filtro onde o ID da categoria for igual ao controle que contém o ID da categoria, que no nosso exemplo é o Label1. Assim retornamos os Produtos relacionados com a Categoria respectiva.

Clique em Add, OK, Next e Finish.

Adicione uma Tabela (menu Table > Insert Table) em nosso TemplateField, com 3 colunas e 1 linha, coloque os Labels e o GridView em cada coluna, apenas para deixarmos nosso exemplo mais organizado:


Salve o projeto, compile para testar e clique em OK para modificar o Web.Config, permitindo assim a compilação do projeto. Se tudo correu bem, veremos os Produtos das respectivas Categorias:


Mais como podemos ter certeza que o ID dos Produtos apresentados são os mesmos do ID da Categoria ao qual ela se relaciona? Temos que alterar o Select Statement de nosso GridView de Produtos. Para isso, clique na SmartTag desse GridView e clique em Configure DataSource.

Clique duas vezes em Next para chegarmos a tela onde podemos alterar a query que nos retorna os Produtos. Altere esta query para a da imagem a seguir:


Assim apenas adicionamos em nosso SELECT o ID da Categoria.

Clique em Next e em Finish, irá aparecer uma mensagem perguntando se você deseja que o Visual Studio gere novamente as colunas do GridView, clique em Não. Agora vá a SmartTag do GridView e clique em Add New Column, e adicione a coluna referente ao ID da Categoria, como abaixo:


Salve o projeto e o compile novamente, você verá que o ID de cada Produto é o mesmo que o ID da Categoria.


Assim finalizo o artigo.

Para quem se interessar, disponibilizo o código fonte desse projeto aqui.

Quaisquer dúvidas mandem emails para wellingtonbalbo@gmail.com ou deixem nos comentários deste artigo que responderei o mais breve possível.

 Até o próximo artigo!