CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900
CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900 VB .NET - Usando e Abusando do DataGridView
Não dá nem para comparar os grids das versões anteriores com o DataGridView presente na versão 2.0 da plataforma .NET ou no Visual Basic 2005. Nem mesmo o DataGrid da versão anterior se compara em recursos e em facilidade de uso ao DataGridView.
Diante de tal superioridade seriamos negligentes se não procurássemos aprender a usar os novos recursos. Este é o objetivo deste artigo. Provavelmente este será o primeiro artigo de uma série visto que o assunto é vastíssimo. Então ao artigo... Para acompanhar este artigo você vai precisar dos seguintes recursos devidamente instalados: Nota: No final de Outubro será lançado no Super DVD VB contendo o site completo off-line, programas fontes em VB 2005 e Asp.Net e C#. Além disto você receberá no DVD, como bônus, as versões completas do Visual Basic 2005 Express Edition, Visual Web Developer Express, SQL Server 2005 Express Edition , .NET Framework 2.0 e SDK preparadas e prontas para instalar com instruções em português para você poder usufruir de todo o poder das ferramentas Express. Apresentando o DataGridView O DataGridView é um controle que serve para exibir dados no formato tabular de linhas e colunas de diferentes tipos de fontes de dados proporcionando uma visão abrangente dos dados ao usuário final. Ele é fácil de configurar e estender e fornece muitas propriedades, métodos e eventos que pode ser usados para personalizar sua aparência e comportamento. Embora você ainda possa usar o DataGrid na versão 2.0 quando precisar exibir dados em um grid não pense duas vezes use o DataGridView pois além dos recursos já citados ele tem um melhor desempenho.(O DataGrid somente foi mantido na versão 2.0 por um questão de compatiblidade.) Os tijolos que montam o DataGridView são as células, elas são formadas pela interseção de linhas e colunas e podem ser acessadas em uma linha ou pela seleção da interseção linha/coluna que são retornadas na propriedade SelectedCells na forma de coleção. Eu não vou perder tempo comparando os dois controles apenas vou deixar registrado que o único recurso que não foi incorporado ao DataGridView é a exibição hierárquica da informação de duas tabelas relacionadas em um único controle. No DataGridView são necessários dois controles para obter o mesmo resultado; assim você vai precisar de dois controles DataGridView para exibir informação de duas tabelas que possuem um relacionamento : mestre-detalhes. Novos Recursos do DataGridView Dentre os inúmeros recursos presentes no controle destacamos os seguintes:
Estrutura Básica do DataGridView As classes primárias da companhia DataGridView derivam de DataGridViewElement. A classe DataGridViewElement fornece a referência para o controle pai DataGridView e possui a propriedade State que trata o valor que representa a combinação dos valores da enumeração DataGridViewElementStates. O controle DataGridView compreender dois fundamentais tipos de objetos: células e bandas. Todas as células derivam da classe DataGridViewCell. Existem dois tipos de bandas: DataGridViewColumn e DataGridViewRow sendo que ambas derivam da classe DataGridViewBand. Além disto o controle interage com diversas classes sendo as mais comuns : DataGridViewCell, DataGridViewColumn, e DataGridViewRow. A célula, como eu já disse, é a unidade básica de interação para o DataGridView. A exibição está centrada nas células e a entrada de dados é frequentemente realizada através das células. Você pode acessar células usando a coleção Cells da classe DataGridViewRow e você pode acessar as células selecionadas usando a coleção SelectedCells do controle. Vejamos o esquema a seguir:
A classe abstrata DataGridViewCell e de onde todas as células derivam; ela e os seus tipos derivados não são controles do tipo Windows Forms. Os objetos DataGridViewCell não controlam sua própria aparência ao invés o DataGridView é o responsável pela aparência dos objetos DataGridViewCell. Para compreender a estrutura básica do controle DataGridView temos que compreender como o objeto DataGridViewCell funciona. Para as células em uma coluna que não está vinculada e o grid não está no modo virtual, as células armazenam o valor na instância da célula. Para células vinculadas a dados a célula não sabe ou mantém o valor. A qualquer momento que precisar obter o valor da célula o grid vai até a fonte de dados e procura pelo valor para a coluna e linha e retorna o valor da célula. No modo virtual a rotina é similar exceto pelo fato do grid disparar o evento CellValueNeeded para obter o valor da célula. A nível de célula tudo isto é controlado pelo método GetValue do DataGridViewCell. O tipo de dado padrão para a propriedade Value da célula é o tipo Object. Quando a coluna torna-se vinculada sua propriedade ValueType é definida o que faz com que cada ValueType das células seja atualizado. O valor da propriedade ValueType é importante para formatação. Um exemplo prático Teoria é que nem remédio amargo, todo mundo torce o nariz, mas é o que realmente ajuda a resolver muitos problemas. Depois de tanta teoria vamos a um exemplo prático usando o DataGridView no VB 2005: Nosso objetivo é exibir os dados da tabela Clientes da base de dados Clientes. Primeiro eu vou criar um novo projeto no Visual Basic 2005 com o nome de dgVbNet. A seguir eu vou criar uma base de dados padrão SQL Server 2005. Para saber como criar a base de dados , a tabela e como incluir dados acompanhe o artigo : VB.NET 2005 - Acesso a fonte de dados SQL Server via código Na janela do projeto teremos :
Se você espiar o código verá que assistente criou o código básico para preencher o DataGridView. Vamos dar uma mão para o assistente incluindo código para efetuar a validação de entrada de dados nas células do DataGridView. Assim no evento Click do ClientesBindingNavigatorSaveItem inclua o seguinte código:
A seguir inclua o seguinte código para os eventos AddNewItem e DeleteItem do projeto:
Apenas para lembrar, o evento Load possui o seguinte código:
Pronto ! Com estas poucas linhas de código temos um Grid editável e com validação. Você pode estender e aperfeiçoar a validação usada. Até o próximo artigo VB.NET. Referências: José Carlos Macoratti |