Artigo Clube Delphi 84 - DataGrid - Criando colunas dinamicamente
Artigo da Revista Clube Delphi Edi��o 84.	0
Desde o lan�amento do ASP.NET, o DataGrid � um dos controles mais empregados, principalmente pela sua f�cil utiliza��o e pela quantidade de recursos que auxiliam o desenvolvedor a criar p�ginas robustas e atrativas. Com poucos cliques, tem-se acesso aos wizards que configuram as colunas (Property Builder) e o formato visual (Auto Format), restando apenas atribuir o DataSource, podendo ser um DataSet, DataTable, cole��es, entre outros.
O objetivo deste artigo � mostrar a possibilidade de formata��o e cria��o de colunas no DataGrid de forma din�mica. � criado um projeto ASP.NET que efetua uma consulta de Produtos com suas respectivas Categorias, em um banco de dados do Firebird. Nota: O banco de dados que acompanha o Firebird (Employee) n�o possui essas tabelas, ent�o foi disponibilizado para download um banco com as respectivas tabelas.
Deseja-se apresentar ao usu�rio todos os Produtos agrupados por Categorias, com subtotais. Para isso, � utilizado como DataSource um DataTable criado a partir do retorno da consulta. Talvez voc� esteja se perguntando: �Por que criar colunas dinamicamente, se � poss�vel cri�-las sem uma linha de c�digo e de forma quase que instant�nea?�. Certo? A resposta para essa pergunta pode ser melhor analisada atrav�s do seguinte questionamento: �Como fazer para que um mesmo DataGrid seja parametrizado de forma que em certas situa��es apresente X colunas e em outras situa��es apresente Y colunas?�. Resposta: Criar as colunas dinamicamente, podendo tamb�m utilizar artif�cios de Orienta��o a Objetos como Heran�a e Polimorfismo.
Para aumentar a compreens�o da resposta apresentada, imagine que voc� queira centralizar seus relat�rios em apenas uma p�gina ASPX com apenas um DataGrid e que cada relat�rio tenha uma consulta SQL diferente. Uma forma vi�vel, atrav�s de OO, � criar uma classe pai RelatorioPadrao com dois m�todos: retornaColunas e retornaDados e para cada relat�rio a ser gerado, criar classes filhas (exemplo RelatorioProduto) que ir�o sobrescrever esses m�todos.
Dessa forma, na p�gina ASPX ser� instanciada a classe desejada e invocados os m�todos que retornam as colunas do DataGrid e seu DataSource. Neste artigo, para simplificar, n�o ser� modelado atrav�s de classes e subclasses. A cria��o das colunas, formata��o do DataGrid e agrupamento com subtotais ser�o feitos diretamente na classe da interface (ASPX).
Dica: Para uma introdu��o ao uso do DataGrid no Delphi, veja o artigo de Rodrigo Sendin na edi��o 73.
No Delphi 8, 2005 ou 2006 crie um projeto ASP.NET chamado �DataGridAgrupadoColunas� contendo um formul�rio chamado �GridAgrupadoColunas.aspx�. Adicione um "	A exibi��o deste artigo foi interrompida.
Este � um post dispon�vel para assinantes MVPEste post tamb�m est� dispon�vel para assinantes da ClubeDelphi DIGITAL ou para quem possui Cr�ditos DevMedia. Clique aqui para saber mais!Saiba como acessar este post atrav�s de Cr�ditos DevMedia:Assinatura de Cr�ditos � Aqui este post custa R$ 1,47Com esse plano voc� compra R$ 180,00 em cr�ditos e ganha, em m�dia, 80% de desconto no pre�o do post. Assine agoraPlano ocasional - Aqui este post custa: R$ 1,96 (assinante) ou R$ 2,45 (n�o-assinante)Voc� compra um m�nimo de R$ 60,00 em cr�ditos e ganha, em m�dia, 50% de desconto no pre�o do post. Compre agoraPlano conveni�ncia � Neste plano este post custa R$ 4,90Neste plano voc� compra somente um post, pagando seu pre�o sem desconto. Compre agora Marcos Santos
Marcos Santos (mossantos@hotmail.com) e Alexandre Santos (alexandrecpd@hotmail.com) s�o graduados em Ci�ncias da Computa��o na UFSC, trabalham como Analistas de Sistemas na Softway Contact Center e com a plataforma .NET desde a vers�o Beta.