Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Revista MSDN Magazine Edição 05 - Aplique Table Style e Column Style no DataGrid
Artigo Originalmente Publicado na MSDN Magazine Edição 05
Clique aqui para ler todos os artigos desta edição
Aplique Table Style e Column Style no DataGrid
por Kristy K. Saunders
Um dos mais persistentes desafios na criação de interfaces de usuário é definir como exibir grandes quantidades de dados de maneira eficiente e intuitiva, sem confundir o usuário. O problema torna-se particularmente complexo quando a interface deve refletir relacionamentos hierárquicos acerca dos dados que o usuário precisa modificar. O controle DataGrid do Windows Forms dá ao desenvolvedor uma ferramenta poderosa e flexível para enfrentar esse desafio. Este artigo explica suas operações básicas e mostra como permitir que o DataGrid exiba colunas de dados de maneira apropriada em aplicativos.
O DataGrid é um dos controles mais poderosos do Windows® Forms. Usando as configurações padrão das propriedades do DataGrid, você pode facilmente vincular um DataSet a um DataGrid para criar interfaces de usuário com o Windows Form bastante impressionantes—dessas que permitem que o usuário percorra níveis múltiplos de dados hierárquicos e classifique e ordene as colunas. Embora seja fácil começar a trabalhar com o controle DataGrid, seus recursos mais sofisticados—por exemplo, a criação de colunas personalizadas—continuam pouco documentados e exigem alguma tentativa e erro. Neste artigo explicarei como construir um DataGrid, ilustrarei os recursos básicos do controle e mostrarei como obter um controle abrangente sobre a aparência e o comportamento de tabelas e colunas. Finalmente, demonstrarei como é possível ampliar o controle DataGrid com objetos de estilo de coluna personalizados, por meio da implementação de um tipo que exibe valores em um Dropdown Combobox.
Aplicativo de quadro de horários (Timesheet)
Para ilustrar diversos recursos dos controles do DataGrid, este artigo analisará a implementação de um aplicativo de quadro de horários de uma firma fictícia de consultoria de software. Analise a Figura 1 para ver o aplicativo completo em funcionamento.
Figura 1 Aplicativo de quadro de horários
A UI é um aplicativo Windows Forms que contém três controles DataGrid (Figura 2). O primeiro controle oferece uma listagem de todos os clientes somente para leitura. O segundo oferece uma listagem de todos os projetos associados ao cliente selecionado também somente para leitura. O terceiro controle DataGrid exibe as entradas do quadro de horas de um funcionário a serem cobradas no projeto selecionado. O DataGrid permite que o usuário insira e edite as entradas de horas, mas o usuário não pode modificar os itens nos controles DataGrid de cliente e projeto.
Figura 2 Relacionamentos
Como carregar o DataSet
Os controles do DataGrid no aplicativo de quadro de horários vinculam um único objeto DataSet. Embora os DataGrids possam ser preenchidos a diversos tipos, os DataSets são suas fontes de dados mais comuns. O objeto DataSet do quadro de horário é preenchido a partir de um banco de dados, por meio de quatro objetos SqlDataAdapter. A criação e a configuração dos objetos SqlDataAdapter é simples por meio do assistente (wizard) de configuração do DataAdapter do Visual Studio® .NET. Observe que uso Stored Procedures com os objetos SqlDataAdapter para acessar as linhas das tabelas Client, Project, TimeEntry e Activity, e para inserir, atualizar e excluir linhas da tabela TimeEntry. Isso porque o aplicativo de quadro de horários usa colunas de identidade (ID – primary key) geradas pelo banco de dados—uma prática comum. Após uma operação de inclusão (Insert), esse valor gerado pelo banco de dados deve ser associado de volta à coluna correspondente no DataTable para operações subseqüentes naquela linha. O método mais confiável de obter esse valor é por meio de uma Stored Procedure INSERT, que o retorna o valor como um parâmetro de saída.
O código no manipulador de evento Load do formulário, mostrado na Listagem 1, preenche o DataSet quando o aplicativo é iniciado. Observe que a propriedade MissingSchemaAction do objeto SqlDataAdapter da entrada de hora é definida como MissingSchemaAction.AddWithKey. Isso provoca o retorno de mais informações de esquema, como informações de chave primária, informações de constraint e propriedades de colunas, inclusive se são permitidos valores null. Por padrão, o método Fill obtém somente metadados de nomes de colunas. Quando o aplicativo permitir que os usuários adicionem e atualizem linhas em um objeto do DataTable, as informações adicionais do DataTable ajudarão a detectar valores inválidos e violações de constraint.
Listagem 1 Carregando as quatro tabelas do DataSet
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Kristy K. Saunders
Kristy K. Saunders (kristy@sftsrc.com) é instrutora e consultora da SoftSource Consulting (http://www.sftsrc.com).




