Criando colunas dinamicamente no ASP.NET DataGrid
O objetivo deste artigo é mostrar a formatação e criação de colunas no DataGrid de forma dinâmica.
Clique aqui para ler todos os artigos desta edição
Criando colunas dinamicamente no ASP.NET DataGrid
por Marcos Santos e Alexandre Santos
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
·Controle ASP.NET DataGrid ·Acesso a banco de dados |
C#, SQL
Download: fontesDataGridDinamico.zip (24KB) |
Chapéu DataGrid |
|
Desde o lançamento do ASP.NET o DataGrid é um dos controles mais empregados, principalmente pela sua fácil utilização e quantidade de recursos que auxiliam o desenvolvedor a criar páginas robustas e atrativas. Através do Visual Studio .NET fica ainda mais inspirador o uso de DataGrid, dada à velocidade de desenvolvimento, já que em poucos cliques, têm-se acesso aos Wizards que configuram as colunas (Property Builder) e o formato visual (Auto Format), restando apenas atribuir o seu DataSource, podendo ser um DataTable, Coleções entre outros.
O objetivo deste artigo é mostrar a 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 no banco de dados Northwind do SQL Server. É apresentado ao usuário todos os Produtos agrupados por Categorias, com subtotais. Para isto, é utilizado como DataSource um novo DataTable criado a partir dos dados retornados na 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 utilizando o VS.NET?”. Certo? A resposta para tal pergunta pode ser melhor analisada através do seguinte questionamento: “Como fazer para que um mesmo DataGrid seja parametrizado de forma tal, 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 (OO) – 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 consulta SQL diferente um do outro. 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 estes métodos. Desta 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).
Projeto
Crie um projeto ASP.NET Web Application chamado DataGridAgrupadoColunas usando como linguagem o Visual C#, contendo um formulário chamado GridAgrupadoColunas.aspx. Insira 3 controles, 1 DataGrid (id = gridProdutoCategorias), 1 Button (id = btnSelecionados ) e 1 ListBox (id = lstSelecionados) - veja a Figura 1. Apenas observe que são utilizadas tabelas HTML para possibilitar uma melhor organização visual.
Figura 1 – Layout de Interface sugerido.
Para agilizar o tempo de desenvolvimento, selecione o DataGrid e formate a cor e fonte do cabeçalho, através de suas propriedades HeaderStyle. Em tempo de design não é necessário fazer mais nada.
No projeto sugerido é realizada uma consulta ao Banco de Dados Northwind do SQL Server, retornando a tabela Products com sua respectiva Categories, como na "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo