Você está na página 1de 6

VB .

NET – Criando um DataGridView no modo não vinculado

Neste artigo, vou mostrar como implementar o controle DataGridView usando o modo não vinculado ou
unbound mode.

O DataGridView é muito usado para exibir dados de diversas fontes de dados, e isso é feito quase sempre no
modo vinculado no qual você define uma fonte de dados, que geralmente é um banco de dados relacional, e
utiliza a propriedade DataSource do controle para vincular os dados ao controle.

Ocorre que você pode precisar exibir dados tabulares cuja origem não seja um banco de dados. Por exemplo,
você pode querer exibir o conteúdo de uma matriz bidimensional ou o conteúdo de um array ou de uma lista
de strings, e por aí vai.

Para esses casos, o controle DataGridView fornece uma forma fácil e personalizável para exibir dados sem
fazer a vinculação com a fonte de dados diretamente, mas usando o modo não vinculado.

Neste artigo, veremos como preencher um controle DataGridView, gerenciar a inclusão, exclusão de
informações e adicionar novas linhas usando o modo não vinculado.

Recursos usados:

 Visual Studio Community 2015

Criando o projeto no VS Community


Abra o VS Community 2015 e clique em New Project.

A seguir, selecione Visual Basic -> Windows -> Windows Forms Application.

Informe o nome DataGridView_UnBound e clique no botão OK.

Agora vamos implementar o Datagridview usando o modo não vinculado e preenchendo o controle com
informações de músicas populares exibindo os dados.
1 – Definindo o código inicial no formulário form1.vb
No formulário form1.vb, vamos definir o código que contém uma inicialização básica, declarando algumas
variáveis, que serão:

 1 Panel – pnlButton
 1 DataGridView – dgvMusicas
 2 Buttons – btnIncluirNovaLinha e btnDeletarLinha

Vamos definir também um método Main e um leiaute básico para o formulário no seu construtor.

Abaixo, temos o código e resultado da execução do projeto neste estágio:

Public Class Form1

Private pnlButton As New Panel


Private WithEvents dgvMusicas As New DataGridView
Private WithEvents btnIncluirNovaLinha As New Button
Private WithEvents btnDeletarLinha As New Button

<STAThreadAttribute()>
Public Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub

End Class

2 – Definindo o método para configurar o leiaute do formulário


No código abaixo, definimos no método DefinirLeiaute() o tamanho do formulário e as propriedades dos
controles que vamos incluir no formulário.

Note que incluímos os botões no controle Panel (pnlButton) e depois incluímos o controle Panel no
formulário: Me.Controls.Add(Me.pnlButton).

Private Sub DefinirLeiaute()

Me.Size = New Size(600, 500)


With btnIncluirNovaLinha
.Text = "Adicionar Nova Linha"
.BackColor = Color.WhiteSmoke
.Location = New Point(10, 10)
End With
With btnDeletarLinha
.Text = "Deletar Linha"
.BackColor = Color.WhiteSmoke
.Location = New Point(100, 10)
End With
With pnlButton
.Controls.Add(btnIncluirNovaLinha)
.Controls.Add(btnDeletarLinha)
.Height = 50
.Dock = DockStyle.Bottom
End With
Me.Controls.Add(Me.pnlButton)
End Sub

3 – Definindo o método para configurar o controle DataGridView


O método ConfiguraDataGridView() inclui o controle na coleção de controles do formulário e configura
linhas, colunas e algumas propriedades do DataGridView.

Private Sub ConfiguraDataGridView()

Me.Controls.Add(dgvMusicas)

dgvMusicas.ColumnCount = 5
With dgvMusicas.ColumnHeadersDefaultCellStyle
.BackColor = Color.Navy
.ForeColor = Color.White
.Font = New Font(dgvMusicas.Font, FontStyle.Bold)
End With

With dgvMusicas
.Name = "dgvMusicas"
.Location = New Point(8, 8)
.Size = New Size(500, 250)
.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
.CellBorderStyle = DataGridViewCellBorderStyle.Single
.GridColor = Color.Black
.RowHeadersVisible = False

.Columns(0).Name = "Lançamento"
.Columns(1).Name = "Faixa"
.Columns(2).Name = "Título"
.Columns(3).Name = "Artista"
.Columns(4).Name = "Album"
.Columns(4).DefaultCellStyle.Font = New
Font(Me.dgvMusicas.DefaultCellStyle.Font, FontStyle.Italic)
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
.Dock = DockStyle.Fill
End With
End Sub

4 – Preenchendo o DataGridView com dados


O método PopularDataGridView() define alguns arrays de strings como dados do controle e atribui cada
array à propriedade rows do controle, além de configurar a propriedade Columns para exibir os dados.

Private Sub PopularDataGridView()

Dim linha0 As String() = {"22/11/1968", "29", "Revolution 9", "Beatles", "The


Beatles [White Album]"}
Dim linha1 As String() = {"08/03/1960", "6", "Fools Rush In", "Frank Sinatra",
"Nice 'N' Easy"}
Dim linha2 As String() = {"11/11/1971", "1", "One of These Days", "Pink Floyd",
"Meddle"}
Dim linha3 As String() = {"1988", "7", "Where Is My Mind?", "Pixies", "Surfer
Rosa"}
Dim linha4 As String() = {"10/5/1981", "9", "Can't Find My Mind", "Cramps",
"Psychedelic Jungle"}
Dim linha5 As String() = {"10/06/2003", "13", "Scatterbrain. (As Dead As
Leaves.)", "Radiohead", "Hail to the Thief"}
Dim linha6 As String() = {"1960", "3", "O amor , o sorriso e a flor", "João
Gilberto", ""}
Dim linha7 As String() = {"1966", "1", "A ", "Chico Buarque", "Chico Buarque"}
Dim linha8 As String() = {"1968", "2", "Balada do Louco", "Os Mutantes", "Os
Mutantes"}

With Me.dgvMusicas.Rows
.Add(linha0)
.Add(linha1)
.Add(linha2)
.Add(linha3)
.Add(linha4)
.Add(linha5)
.Add(linha6)
.Add(linha7)
.Add(linha8)
End With

'note que estamos alterando a orde de exibição das colunas o datagridview


With Me.dgvMusicas
.Columns(0).DisplayIndex = 3
.Columns(1).DisplayIndex = 4
.Columns(2).DisplayIndex = 0
.Columns(3).DisplayIndex = 1
.Columns(4).DisplayIndex = 2
End With

End Sub

5 – Incluindo novas linhas no controle DataGridView


Para incluir novas linhas no controle usando o evento Click do botão de comando btnIncluirNovaLinha,
usamos o método Rows.Add() para incluir uma nova linha:

Private Sub btnIncluirNovaLinha_Click(ByVal sender As Object, ByVal e As EventArgs)


Handles btnIncluirNovaLinha.Click
Me.dgvMusicas.Rows.Add()
End Sub

6 – Deletando linhas do controle DataGridView


Para deletar uma linha, usamos o evento Click do botão de comando btnDeletarLinha onde verificamos e
existem informações no controle, e se o índice da linha selecionando não é igual a quantidade de linhas
existentes, para a seguir usar o método RemoveAt e excluir a linha com o índice selecionado:

Private Sub btnDeletarLinha_Click(ByVal sender As Object, ByVal e As EventArgs) Handles


btnDeletarLinha.Click

If Me.dgvMusicas.SelectedRows.Count > 0 AndAlso


Not Me.dgvMusicas.SelectedRows(0).Index = Me.dgvMusicas.Rows.Count - 1 Then
Me.dgvMusicas.Rows.RemoveAt(Me.dgvMusicas.SelectedRows(0).Index)
End If

End Sub

7 – Chamando os métodos no evento Load do formulário


Agora, basta chamar os métodos definidos no evento Load do formulário conforme o código a seguir:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Me.Text = "Usando o DataGridView no modo Não Vinculado"


Me.BackColor = Color.SandyBrown
DefinirLeiaute()
ConfiguraDataGridView()
PopularDataGrid()

End Sub
Executando o projeto neste momento, iremos o obter o seguinte resultado:

Você pode incrementar o exemplo definindo outros recursos, como validações, formatações etc.

Como exemplo, abaixo estamos usando o evento CellFormating para validar a coluna Lançamento, de forma
que, se o usuário editar essa coluna, deverá entrar a data no formato ToShortDateString() ( dd/MM/yyyy) ou
obterá uma mensagem de erro:

Private Sub dgvMusicas_CellFormatting(ByVal sender As Object,


ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles
dgvMusicas.CellFormatting

If e IsNot Nothing Then

If Me.dgvMusicas.Columns(e.ColumnIndex).Name = "Lançamento" Then


If e.Value IsNot Nothing Then
Try
e.Value =
DateTime.Parse(e.Value.ToString()).ToShortDateString()
e.FormattingApplied = True
Catch ex As FormatException
MessageBox.Show("{0} não é uma data válida.",
e.Value.ToString())
End Try
End If
End If
End If
End Sub

Abaixo, vemos uma simulação para uma entrada de data no formato incorreto que será validado pelo código
acima:
Assim, você pode usar o DataGridView no modo não vinculado e personalizando o seu comportamento e
suas propriedades.

Pegue o projeto completo aqui: DataGridView_UnBound.zip.

Você também pode gostar