DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Conversão de List para DataTable - Revista .net Magazine 86

O artigo demonstra como converter os dados que foram carregados para uma lista genérica em um objeto do tipo DataTable. A principal finalidade é possibilitar que estes dados possam ser facilmente ordenados ao se usar um controle DataGridView de






As pessoas usam programas de computador para acessar seus dados de maneira organizada. Vendas, agendas, contabilidade, estatística e muitas outras áreas de atividades humanas se beneficiam das facilidades proporcionadas pelos programas de computador. Os programas desenvolvidos em plataformas gráficas como o Windows agilizam o trabalho tanto para o usuário como para o desenvolvedor desses programas. No framework .Net isto é particularmente observado na maneira como os controles visuais são facilmente preenchidos com dados oriundos das mais diversas fontes, principalmente bancos de dados.

Recentemente o mapeamento objeto-relacional, através do qual se procura quebrar a distância existente entre as linguagens de programação e a maneira como os dados são armazenados e manipulados nos bancos, evoluiu bastante e recursos como Entity Framework, LINQ (Language INtegrated Query) e facilidades para manipulação de coleções de objetos na memória se tornaram cada vez mais comuns. Estes recursos, no entanto, exigem mais do desenvolvedor que, antes, usava os geradores de código automático.

 

Nota: Estes recursos ainda existem. Considerando o DataSet Designer do Visual Studio, através do qual é bem simples fazer mapeamento das tabelas de um banco de dados para uso no preenchimento de controles visuais ou para se trabalhar no código de maneira mais organizada. No entanto, muito do código gerado é desnecessário e muitas vezes penaliza o desempenho da aplicação final.

 

Termos como S.O.L.I.D., Entity Framework, Code First, entre outros, vêm tomando conta do vocabulário dos programadores que, num surpreendente retorno às origens, voltaram a meter a mão na massa tendo de voltar a escrever grande quantidade de código para criar programas ágeis e bem feitos. Isso tudo tem um reflexo quando além da agilidade e boa arquitetura a aplicação precisa ser amigável ao usuário final.

Existem alguns reflexos negativos quando, por exemplo, usamos uma coleção de objetos baseados em uma lista genérica. O controle DataGridView muito popular nos programas Windows Forms possui a característica de permitir a ordenação automática de seu conteúdo ao se clicar em um cabeçalho de uma coluna. Mesmo existindo outros recursos interessantes deste controle, esta facilidade é perdida quando se usa uma lista genérica para preencher este controle.

Isto acontece porque, para que as colunas sejam automaticamente ordenadas é preciso código fazendo a ordenação dos dados e isto deve ser explicitamente implementado, ou seja, o desenvolvedor deve escrever código para esta tarefa.

Outra forma de se fazer isto é usar a classe DataTable para preencher o controle. Como esta possui a lógica necessária para fazer a ordenação e muitas tarefas da manipulação de dados, acaba sendo a melhor escolha para preenchimento rápido dos dados neste tipo de controle.

Porém, em muitos projetos os dados já são passados neste formato não sendo possível reescrever a camada de acesso de dados. Uma solução é obter os dados desta lista para preencher a classe DataTable. Para tanto é preciso conhecer a estrutura da classe que compõe a lista de dados e isto também pode ser feito com relativa facilidade dentro do .Net usando Reflection.

Reflection e a estrutura de objetos

Dentre as muitas funcionalidades obtidas com o uso de Reflection a principal é aquela que possibilita conhecer os elementos que compõem uma classe. Usando as classes das bibliotecas System.Type e System.Reflection o desenvolvedor pode ler os atributos, propriedades, campos, métodos e construtores das classes que fazem parte de qualquer assembly (executável ou class library) desenvolvido com as linguagens do framework .Net.

Isto é possível porque os assemblys são criados em uma linguagem chamada Common Runtime Language (CLR) e possuem uma estrutura que armazena os seus dados em uma tabela nestes arquivos, que por sua vez, podem ser lidos por outros programas também desenvolvidos no framework.

 

Nota do DevMan

Reflection não é uma exclusividade do .Net. É anterior ao mesmo, mas, com a CLR é implementado com muito mais facilidade dentro deste ambiente permitindo que programadores com poucos conhecimentos consigam obter produtividade ao lançar mão destas técnicas. Naturalmente que programas desenvolvidos em outras plataformas como os executáveis nativos para o Windows e outros sistemas operacionais permitem o Reflection usando outros tipos de recursos. Uma demonstração disto é que os programas do framework através do Interop podem consumir class librarys desenvolvidas em outras linguagens."



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Vladimir Rech

Tecnólogo em Desenvolvimento de Sistemas pelo CEFET-PR, palestrante; trabalha com desenvolvimento de sistemas em .NET destacando-se aplicações Windows, ASP e Web Services.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03