VB .NET - Vinculando objetos a um controle DataGridView


Neste artigo vou mostrar como podemos vincular objetos ao controle DataGridView usando a linguagem VB .NET.

Eu já escrevi dezenas de artigos sobre o DataGridView, mas como o assunto não foi esgotado, hoje eu vou mostrar como podemos vincular objetos ao DataGridView.

Apenas para recordar, se você deseja vincular dados de um banco de dados SQL Server em um DataGridView pode usar o código abaixo:

Imports System.Data.SqlClient
Public Class Form1
    Private Sub mnuVincularDados_Click(sender As Object, e As EventArgs) Handles mnuVincularDados.Click
        Dim tabela As New DataTable
        Dim connection As New SqlConnection(My.Settings.ConexaoSQLServer)
        Try
            connection.Open()
            Dim command As SqlCommand = connection.CreateCommand
            command.CommandText = "SELECT * FROM Categories"
            tabela.Load(command.ExecuteReader)
            command.Dispose()
            dgvDados.DataSource = tabela
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            connection.Close()
        End Try
    End Sub
End Class

No exemplo estamos acessando a tabela Categories do banco de dados Northwind.

A string de conexão usada esta definida na propriedade Settings da aplicação:

Mas esse não é o foco desse artigo, o que nos interessa é vincular objetos ao DataGridView.

Então vamos ao trabalho...

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual Basic e o template Windows Forms Application;

Informe o nome Vincular_Objetos_DataGridView e clique no botão OK;

No formulário Form1 inclua um controle Button com o nome btnVincular e o texto conforme mostra o leiaute abaixo:

Definindo o objeto

Vamos definir agora o objeto que desejamos vincular ao datagridview.

Para isso vamos criar uma classe chamada Usuario no projeto via menu Project -> Add Class definindo o código abaixo nesta classe:

Public Enum Permissao
    Admin
    Operador
    Gerente
End Enum
<Serializable()>
Public Class Usuario
    Public Property Nome As String
    Public Property Perfil As Permissao
    Public Property Ativo As Boolean
    Sub New(ByVal _nome As String, _perfil As Permissao, _ativo As Boolean)
        Nome = _nome
        Perfil = _perfil
        Ativo = _ativo
    End Sub
    Public Sub New()
    End Sub
End Class

No início do código definimos uma enumeração chamada Permissao onde criamos 3 tipos de permissão : Admin, Operador e Gerente.

Na classe Usuario temos 3 propriedades :

Definimos dois construtores na classe. O construtor que inicializa os valores e outro construtor vazio.

Definimos também o atributo <Serializable> para permitir que o objeto seja serializável.

Definindo o código do formulário

Agora vamos incluir no formulário o código

Public Class Form1
    Private Usuarios As List(Of Usuario)
    Private dgvUsuarios As New DataGridView()
    Private Sub btnVincular_Click(sender As Object, e As EventArgs) Handles btnVincular.Click
        SetupForm()
        SetupGrid()
    End Sub
    Private Sub SetupForm()
        AutoSize = True
    End Sub
    Private Sub SetupGrid()
        'cria uma lista de usuários
        Usuarios = New List(Of Usuario)
        Usuarios.Add(New Usuario("Macoratti", Permissao.Admin, True))
        Usuarios.Add(New Usuario("Jefferson", Permissao.Operador, True))
        Usuarios.Add(New Usuario("Janice", Permissao.Gerente, True))
        Usuarios.Add(New Usuario("Jessica", Permissao.Operador, False))
        Usuarios.Add(New Usuario("Miriam", Permissao.Operador, True))
        ' Inicializa o  DataGridView.
        dgvUsuarios.AutoGenerateColumns = False
        dgvUsuarios.AutoSize = True
        dgvUsuarios.DataSource = Usuarios
        dgvUsuarios.Columns.Add(CriaComboBoxComEnums())
        ' Inicializa e adiciona uma coluna textbox
        Dim column As DataGridViewColumn = New DataGridViewTextBoxColumn()
        column.DataPropertyName = "Nome"
        column.Name = "Nome"
        dgvUsuarios.Columns.Add(column)
        ' Inicializa e adiciona uma coluna checkbox
        column = New DataGridViewCheckBoxColumn()
        column.DataPropertyName = "Ativo"
        column.Name = "Ativo"
        dgvUsuarios.Columns.Add(column)
        ' Inicializa o formulário
        Controls.Add(dgvUsuarios)
        Me.AutoSize = True
        Me.Text = "Vinculando objetos ao DataGridView"
    End Sub
    Private Function CriaComboBoxComEnums() As DataGridViewComboBoxColumn
        Dim combo As New DataGridViewComboBoxColumn()
        combo.DataSource = [Enum].GetValues(GetType(Permissao))
        combo.DataPropertyName = "Perfil"
        combo.Name = "Perfil"
        Return combo
    End Function
End Class

No formulário no evento Click do botão - Vincular Objeto ao DataGridView - chamamos os métodos :

Executando o projeto iremos obter:

Nota: Para salvar as informações você pode serializar o objeto. (Veja no site artigos que mostram como fazer isso)

Pegue o projeto completo aqui: Vinculando_Objetos_DataGridView.zip

Até o próximo artigo...

Meus filhinhos, não amemos de palavra, nem de língua, mas por obra e em verdade.
E nisto conhecemos que somos da verdade, e diante dele asseguraremos nossos corações;
Sabendo que, se o nosso coração nos condena, maior é Deus do que o nosso coração, e conhece todas as coisas.

1 João 3:18-20

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti