You are on page 1of 6

22/5/2014 Vinculando dados ao DataGridView

http://www.macoratti.net/vbn_dgv2.htm 1/6
VB.NET - Usando o BindingSource
O Controle DataGridView suporta o modelo padro de vinculao dos formulrios Windows,
e, desta forma pode ser vinculado a uma variedade de fonte de dados. Em muitas
circunstncias voc efetuar a vinculao a um componente BindingSource que ir gerenciar
os detalhes da interao com a fonte de dados.
O componente BindingSource pode representar qualquer fonte de dados em um formulrio
Windows e d a voc uma grande flexibilidade quando da seleo ou modificao da
localizao dos seus dados.
Podemos fazer a vinculao do BindingSource qualquer um dos seguintes
objetos/Interfaces:

- Object
- System.Type
- IEnumerable
- ICollection
- IList
- IListSource
- IBindingList
- IBindingListView
Resumindo, o componente BindingSource possui duas funes bsicas:
1. Simplificar a vinculao de controles em um formulrio a fonte de dados, fornecendo
diversos recursos para realizar as operaes com dados. Isto possvel pela vinculao
do componente a sua fonte de dados e ento vincular os controles do formulrio ao
componente BindingSource. Todas as interaes com os dados tais como : navegao,
filtragem, atualizao, ordenao so feitas pela chamada ao componente
BindingSource.
2. Poder atuar como uma fonte de dados fortemente tipada. O tipo da fonte de dados
relacionada definida atravs de um dos seguintes mecanismos:
Usar o mtodo Add para incluir um item ao componente BindingSource
Definir a propriedade DataSource para uma lista , um objeto ou tipo.
Ambos mecanismos criam um lista fortemente tipada, e , o BindingSource suporte a
vinculao simples e complexa de dados como indicada pelas suas propriedade DataSource e
DataMember
O BindingSource fornece membros para acessar os dados relacionados. O item atual pode ser
retornado atravs da propriedade Current, e lista inteira pode ser retornada atravs da
propriedade List.
22/5/2014 Vinculando dados ao DataGridView
http://www.macoratti.net/vbn_dgv2.htm 2/6
As operaes de edio so suportadas no item atual atravs dos mtodos : Current ,
RemoveCurrent, EndEdit, CancelEdit, Add e AddNew.
Embora o tratamento de valores atualizados feito automaticamente para todos os tipos de
fonte de dados, a classe fornece os eventos CurrentItemChanged and DataSourceChanged,
que permitem uma customizao.
A fonte de dados que so vinculadas ao BindingSource podem ser percorridas e gerenciadas
com a classe BindingNavigator que fornece uma interface para navegao pelos itens da
lista. Embora o BindingNavigator possa ser vinculado a qualquer fonte de dados ele foi
criado para ser integrado com o BindingSource atravs da propriedade
BindingNavigator.BindingSource
Muitos membros da classe BindingSource operam na lista relacionada representada pela
propriedade List, e, simplesmente referencia suas operaes para lista relacionada. Desta
forma quando o BindingSource esta vinculado a uma implementao customizada de IList, o
comportamento dos membros podem diferir do comportamento descrito na documentao
da classe. Assim, o mtodo RemoveAt chama IList.RemoveAt. Na documentao o mtodo
RemoveAt descrito considerando que a implementao de IList foi corretamente
implementada.
A propriedade padro para a classe BindingSource DataSource e o evento padro
CurrentChanged.
Nota: Como o BindingSource suporta a vinculao a fonte de dados simples e a complexas,
a terminologia pode ser confusa. O temo list refere-se a coleo de dados da fonte de
dados , item denota um simples elemento. Para fonte de dados complexas os termos
equivalentes table e row so usados
Em suma, o componente BingindSource veio para resolver alguns problemas do databinding.
Como voc j viu, o BindingSource possui as propriedades DataSource e DataMember que
voc pode definir e vincular ao BindingSource , podendo inclusive alterar o DataSource do
BindingSource e a vinculao ainda vai continuar funcionando.
Se voc resolver usar o DataGridView para exibir os dados da tabela Customers usando o
BindingSource usar o seguinte cdigo:

Dim dgv As
DataGridView = New
DataGridView()
Dim bs As
BindingSource = New
BindingSource()
bs.DataSource =
CustomerTable
dgv.DataSource = bs

22/5/2014 Vinculando dados ao DataGridView
http://www.macoratti.net/vbn_dgv2.htm 3/6

Para definir uma viso Mestre/detalhe voc pode fazer o seguinte:

bsMaster.DataSource = ds
bsMaster.DataMember =
Customers
bsChild.DataSource =
bsMaster ' DataSource ->
BindingSource(Mestre)
bsChild.DataMember =
CustOrders ' DataMember ->
relation
dgvMaster = bsMaster
dgvChild = bsChild

Vejamos agora um exemplo usando o BindingSource juntamente com o DataGridView para
exibir os dados da tabela Customers do banco de dados Northwind. Este banco de dados
esta presente no SQL Server mas eu estou usando o MSDE.(importei a base de dados
Northwind)

Nota: este exemplo foi adaptado da MSDN.

Inicie um novo projeto no VB2005 Express dando ao mesmo um nome adequado. Eu chamei
de bindingSourceDataGridView1.

No formulrio principal inclua os componentes DataGridView e BindingSource conforme a
figura abaixo:

Declare os seguintes
Namespaces que sero
usados no Projeto
Imports
System.Data.SqlClient
22/5/2014 Vinculando dados ao DataGridView
http://www.macoratti.net/vbn_dgv2.htm 4/6
Imports System.data


A seguir crie um rotina que ser responsvel pela conexo com o banco de dados seleo dos
dados da tabela Customers via instruo SQL e vinculao ao BindingSource para exibio
no DataGridView. A rotina exibeDados() recebe um parmetro string chamado
selectCommand

Private Sub exibeDados(ByVal selectCommand As String) Try
' Especifica a string de conexo acessando o banco de dados Northiwnd no
' MSDE na maquina local
Dim connectionString As String = _
"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;_ User
ID=sa;password=;Data Source=MACORATI\VSDOTNET" 'exemplo de string de conexo para o
SQL Server na maquina local acessando Northwind
' "Integrated Security=SSPI;Persist Security Info=False;" + _
' "Initial Catalog=Northwind;Data Source=localhost" 'Cria um novo data adapter baseado na
consulta definida
Dim dataAdapter As New SqlDataAdapter(selectCommand, connectionString)
' Cria um command builder para gerar os SQL para atualizar, incluir e
' deletar baseados no selectCommand.
Dim commandBuilder As New SqlCommandBuilder(dataAdapter) ' Preenche um novo data
table e vincula ao BindingSource.
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dataAdapter.Fill(table)
BindingSource1.DataSource = table ' Redimensiona as colunas do DataGridView
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
Catch ex As SqlException
MessageBox.Show("Para rodar este exemplo. Substitua a string de conexo usada _ para um
valor vlido para o seu sistema.")
End Try End Sub

22/5/2014 Vinculando dados ao DataGridView
http://www.macoratti.net/vbn_dgv2.htm 5/6
Finalmente no evento Load do formulrio inclua o cdigo vincula o BindingSource ao
DataGridView e que chama esta rotina com o parmetro definindo os dados que desejamos
exibir:

Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
' Vincula o DataGridView ao BindingSource e
carrega os dados do banco de dados
Me.DataGridView1.DataSource =
Me.BindingSource1
exibeDados("select * from Customers") End Sub

Executando o projeto teremos o resultado abaixo:


Pegue o projeto completo aqui : bds_dgv1.zip

Eu sei, apenas VB, mas eu gosto !!!
Rom 7:4 Assim tambm vs, meus irmos, fostes mortos quanto lei
mediante o corpo de Cristo, para pertencerdes a outro, quele que
ressurgiu dentre os mortos a fim de que demos fruto para Deus.
Rom 7:5 Pois, quando estvamos na carne, as paixes dos pecados,
suscitadas pela lei, operavam em nossos membros para darem fruto
para a morte.
Rom 7:6 Mas agora fomos libertos da lei, havendo morrido para
aquilo em que estvamos retidos, para servirmos em novidade de
esprito, e no na velhice da letra.
Veja os Destaques e novidades do SUPER
22/5/2014 Vinculando dados ao DataGridView
http://www.macoratti.net/vbn_dgv2.htm 6/6
DVD Visual Basic (sempre atualizado) :
clique e confira !
Quer migrar para o VB .NET ?
Veja mais sistemas completos para a
plataforma .NET no Super DVD .NET
, confira...
Curso Bsico VB .NET - Vdeo
Aulas
Quer aprender C# ??
Chegou o Super DVD C# com
exclusivo material de suporte e
vdeo aulas com curso bsico sobre
C#.
Curso C# Basico - Video Aulas

Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referncias:
Seo VB .NET do Site Macoratti.net
Super DVD .NET - A sua porta de entrada na plataforma .NET
Super DVD Vdeo Aulas - Vdeo Aula sobre VB .NET, ASP .NET e C#
Seo C# do site Macoratti.net
Super DVD C#
Super DVD Visual Basic
Curso Bsico VB .NET - Vdeo Aulas
Curso C# Bsico - Vdeo Aulas
Jos Carlos Macoratti

You might also like