Patrocínio Natura

VB.NET: Utilizando o controle DataGridView

1 de agosto de 2011

Estava navegando pela Internet pesquisando rotinas para meus aplicativos em VB, já que nesse linguagem não sou tão íntimo da interface de desenvolvimento como sou da dupla Delphi/Pascal. Sempre que pensamos em VB vem logo a cabeça nosso amigo Macoratti, profissional e site com repositório imenso de rotinas e ensinamentos em VB que inclsuive já deixou sua marca várias vezes em nossas páginas.

Para mudar um pouco o foco, dessa vez vou falar do “Visual Basic em Português“, blog pessoal de Jorge Paulino sobre o mesmo assunto, acabei vendo um artigo sobre Banco de Dados e DataGridView muito didático, foi mais ou menos assim, copiei e colei para dentro do meu código, troquei o nome da base e das tabelas e rodou tudo! Parabéns pelo modo simples e prático de ensinar, outro grande lugar para o amantes e necessitados como eu em VB podem pesquisar.

Veja a reprodução na íntegra abaixo e não deixe de visitar o site.

abraço.

VB.NET: Utilizando o controle DataGridView

O controlo DataGridView é um dos controlos mais versáteis, sendo também simples de utilizar, para mostrar informação com base em uma fonte de dados. Possui alguns wizards possibilitando de uma forma simples, ligar a uma base de dados, gerando automaticamente as colunas e linhas.

No entanto, é possível colocar os dados na DataGridView com poucas linhas de código, permitindo-nos mais versatilidade na utilização deste controlo. Mas para além das inúmeras propriedades que este controlo possui, existem algumas tarefas em que o código é obrigatório para que se obtenha o efeito desejado.

O objectivo deste artigo é mostrar como colocar informação numa DataGridView, podendo-se alterar os dados (modificar, apagar e inserir) e efectuar algumas personalizações e operação.

Para começar é necessário criar uma tabela e definir um dos campos com chave primária. Só assim a DataGridView saberá qual é o campo que vai modificar na base de dados. Neste caso será utilizado o SQL Server mas o exemplo também se aplica ao Microsoft Access, alterando apenas para as suas classes.

    Imports System.Data.SqlClient

    ' Declaração de variáveis privadas
    Private da As SqlDataAdapter
    Private ds As DataSet

    ' No Form Load vamos colocar a informação para actualizar a DataGridView
    Private Sub DataGridViewExample_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _ 
       "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\myDatabase.mdf';" & _ 
       "Integrated Security=True;User Instance=True"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet
        Dim SQL As String = "SELECT * FROM myTable"
        da = New SqlDataAdapter(SQL, connection)

        ' Cria um DataSet, ou seja, uma representação em memória da informação
        ds = New DataSet

        ' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "myTable")

        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.DataGridView1.DataSource = ds.Tables("myTable")

        ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
        ' porque esta não foi aberta através do comando .Open()
        connection = Nothing

      End Sub

Neste momento a DataGridView já tem dados. Para gravarmos as alterações que efectuarmos, como apagar, modificar e inserir, só necessitamos de efectuar o seguinte (num botão por exemplo):

E já está! Ou seja, como muito pouco código consegue-se colocar informação na DataGridView e actualizar a informação na base de dados.

Mas vamos agora fazer algumas personalizações, como exemplo, das muitas que são possíveis:

Colorir linhas e alterar a Font através de uma pesquisa

Este pequeno exemplo pretende colorir as linhas e alterar a Font onde existe a palavra “Lisboa”. Pode-se também alterar outras propriedades nas linhas da DataGridView

' Inicia um ciclo em todas as linhas
For Each row As DataGridViewRow In Me.DataGridView1.Rows

    ' Caso não seja um nova linha (a última)
    If Not row.IsNewRow Then

        ' Inicia um ciclo em todas as células/colunas da linha actual
        For Each cell As DataGridViewCell In row.Cells

        ' Verifica se a célula, após convertida para maiúscula, tem a palavra 
        ' "LISBOA" e caso seja verdadeiro coloca a cor de fundo, nova Font 
        ‘ e salta para a próxima 
        If cell.Value.ToString.ToUpper.Contains("LISBOA") Then

            With Me.DataGridView1.Rows(row.Index).DefaultCellStyle
                .BackColor = Color.SpringGreen
                .Font = New Font("Verdana", 12)
             End With

             Exit For

        End If

        Next ' Fim do ciclo nas colunas

    End If

Next ' Fim do ciclo nas linhas

Alterar alinhamento de texto nas colunas

Este pequeno exemplo pretende alterar o alinhamento do texto nas células e header (cabeçalho) da coluna 1

' Alterações na coluna 1
With Me.DataGridView1.Columns(1)

   ' Altera o alinhamento das células para o centro 
   .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

   ' Altera o alinhamento da header para o centro 
   .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter   

End With

Seleccionar uma linha de acordo com um número (ID)

Este pequeno exemplo pretende seleccionar uma linha de acordo com um número (ID) utilizando uma função auxiliar que identifica a posição ou índice na DataGridView

    ' Função que pesquisa na coluna 0 por um id e devolve a posição na lista
    Private Function getDataGridViewIndex(ByVal id As Integer) As Integer

        For Each row As DataGridViewRow In Me.DataGridView1.Rows

            If Not row.IsNewRow Then
                If row.Cells(0).Value = id Then
                    Return row.Index
                End If
            End If

         Next

         Return 0

    End Function

E a utilização:

Dim result As Integer = getDataGridViewIndex(10)

With Me.DataGridView1   

    ' Define que a selecção será efectuada na linha toda
    .SelectionMode = DataGridViewSelectionMode.FullRowSelect   

     ' Define que a célula/linha actual é a da pesquisa
    .CurrentCell = DataGridView1.Rows(result).Cells(0)

     ' Define que a primeira linha a aparecer visível no topo da
    '  DataGridView é a encontrada  (caso a lista seja grande)
    .FirstDisplayedScrollingRowIndex = result   

 End With

Em suma, o controlo DataGridView é bastante simples de utilizar e permite diversas personalizações o que facilita bastante o programador/utilizador. É o controlo ideal para visualizar e alterar informação na base de dados sobre a forma de grelha. PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!

Compatilhe esse artigo!

4 Comentários

  • FRANCISCO ROBERTO SARAIVA 23 de abril de 2012em8:57

    Sou novo em VB, estou começando agora e tenho algumas dúvidas, possuo um banco de dados do Access 2007 e fiz um programinha no VB 2008.
    NÂO CONSIGO ALTERAR NADA PELOS BOTÕES DO DATAGRID, O QUE FAZER? PODERIA ME MANDAR UM E-MAIL COM A SOLUÇÃO…MESMO ASSIM EU ADOREI ESTA MATÉRIA E VOU GUARDA-LA PARA USAR QUEM SABE MAIS TARDE…OBRIGADO

  • Edinho 18 de dezembro de 2015em16:29

    Boa tarde, pra mim não deu certo 100%, porque eu executo a aplicação, entro no form e aparece a linha colorida de acordo com a condição, mas se saio do form e abro novamente só colori quando clico em alguma linha, e se eu encerro a aplicação e abro novamente aparece colorida. Se puder ajudar ficarei mto grato, obrigado, Edinho.

  • José Do Nascimento 7 de fevereiro de 2016em13:58

    Amigo faz um exemplo de como salvar os dados de grid view em uma tabela banco de dados mysql.

  • José Do Nascimento 7 de fevereiro de 2016em13:59

    Utilizando o vb

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.