 Desvendando os segredos do Data Binding no VB.NET  - I
   Desvendando os segredos do Data Binding no VB.NET  - I
A vinculação de dados - DataBinding - no VB.NET é uma poderosa característica que permite que elementos visuais no cliente seja conectados a uma fonte de dados como DataSet , DataViews , arrays , etc. Alguns destes elementos visuais no cliente podem ser TextBox , ListBox , ComboBox , DataGrid , etc. Uma comunicação em duas vias é realizada de maneira que qualquer alteração feita na fonte de dados seja refletida imediatamente no elemento visual.
Bem ,  se você conhece a vinculação de dados nas versões 
anteriores deve estar pensando : "Ora , ora eu já vi este filme antes..."
 . Calma ! não se 
apresse em julgamentos temerários . Vale a pena você considerar o
DataBinding no VB.NET como uma ferramenta muita 
mais poderosa e flexível que nas versões anteriores do VB. Eu pretendo 
convencê-lo disto em uma série de três artigos , dos quais este será o primeiro. 
Então acompanhe-me...
. Calma ! não se 
apresse em julgamentos temerários . Vale a pena você considerar o
DataBinding no VB.NET como uma ferramenta muita 
mais poderosa e flexível que nas versões anteriores do VB. Eu pretendo 
convencê-lo disto em uma série de três artigos , dos quais este será o primeiro. 
Então acompanhe-me...
O DataBinding antes...
No modelo da vinculação de dados usado nas versões anteriores do VB a fonte de dados que você podia usar para vinculação estava praticamente limitada um banco de dados. Cada sistema de banco de dados fornecia e fornece suas próprias API´s para ajudá-lo a criar aplicações visuais com a vinculação de dados. Com isto o programador não tinha a flexibilidade de controlar o processo de vinculação. No fundo você tinha uma caixa preta , e , isto fez com que este recurso fosse praticamente evitado pelos desenvolvedores mais experientes.
O DataBinding depois...
Na plataforma .NET o .NET framework fornece um databinding muito mais flexível e poderoso que permite ao programador ter um controle muito acurado sobre as etapas envolvidas no processo de vinculação de dados. Uma das grandes melhorias que o .NET trouxe foi a introdução do databinding em páginas web através do uso dos controles do lado do servidor do .NET (ASP.NET).
Vantagens do DataBinding
Desvantangens do DataBinding
Conceitos sobre DataBinding (Vinculação de dados)
A seguir temos uma figura que ilustra de forma simples o conceito da vinculação de dados (DataBinding)
|  | - Ao lado 
    temos uma figura exibindo os dois modos de vinculação de dados: - DataBinding Complexa - DataBinding Simples | 
Para que o processo de vinculação de dados (chamado pelos 'gringos' de DataBinding) se realize deve existir um provedor de dados e um consumidor de dados de forma que uma ligação sincronizada seja estabelecida entre os dois. Os provedores de dados (Data Providers) contém os dados e os consumidores (Data Consumer) usam os dados expostos pelos provedores e os exibem.
Como disse no VB.NET temos uma maior amplitude de provedores de dados. No .NET qualquer classe ou componente que implemente a interface IList pode ser uma fonte de dados válida. Se um componente implementa a interface IList então ele é transformado em uma coleção baseada em indices. Abaixo temos algumas das classes que suportam a interface IList :
Nota:
A plataforma .NET framework suporta a vinculação de dados Simples e a Complexa.
Para tornar mais claro o conceito temos a seguir o fluxo básico durante a vinculação de dados:
|  | - Temos aqui 
    a camada de controles com suas propriedades para vincular dados - A seguir temos a coleção DataBinding composto pelos objetos Binding - Depois temos o objeto BindingContext e o objeto CurrencyManager ou o objeto PropertyManager | 
No VB.NET os controles podem ter muitas propriedades que podem ser vinculadas a uma fonte de dados. Cada propriedade databound possui um -0 objeto Binding associado. Desde que um controle pode ter muitas objetos Binding, o controle possui uma coleção (uma instância da classe ControlBindingsCollection) de todos os objetos Bindings. (Diferentes propriedades de um mesmo controle podem estar ligadas a diferentes datasources.)
Nota: Para ver a lista de propriedades que um controle suporta para vinculação , clique no controle , a seguir na caixa de propriedades do controle localize DataBindings e clique em Advanced. Você verá uma janela com a lista de propriedades como na figura a seguir:

Cada objeto Binding se comunica com um CurrencyManager ou PropertyManager. As classes CurrencyManager e PropertyManager são derivadas da classe base BindingManagerBase. O objetivo da classe BindingManagerBase é manter a concorrência entre a fonte de dados e o controle. Das duas classes a classe CurrencyManager é usada quando a fonte de dados implementa a interface IList ( DataView, DataSet, ArrayList,etc.) A classe CurrencyManager pode ser usada para vinculação simples ou complexa , porém a classe PropertyManager é usada quando o datasource é uma instância de uma classe definida pelo usuário. A propriedade dos controles esta vinculada a propriedade exposta por este objeto e ela somente pode ser usada para vinculação simples.
Geralmente você pode usar a seguinte regra: Usar o CurrencyManager quando sua classe é um Container de dados e usar o PropertyManager quando quiser vincular um controle a propriedades expostas pela sua própria classe.
Como podemos ter um formulário com muitos controles cada um vinculado a uma fonte de dados diferente, precisamos de uma classe para gerenciar os objetos CurrencyManager e PropertyManager. A classe BindingContext faz isto , e , cada formulário possui por padrão um objeto BindingContext associado a ele. (Você pode criar outros objetos BindingContext no formulário).
Resumindo:
Controle o DataBinding
A real vantagem do DataBinding no VB.NET é ser flexível e isto é possível por que as classes Binding e BindingManagerBase suportam eventos. Isto permite que você altere os dados passados entre o controle e a fonte de dados. Veja um esquema abaixo:
|  
 | - O objeto
    Binding expõe dois eventos : 
    Format e Parse. - O evento Format é disparado duas vezes : a primeira quando os dados são capturados da fonte de dados para o controle e a segunda quando a fonte de dados é alterada e o dado é atualizado para o controle. - O evento Parse é disparado uma vez quando os dados são enviados do controle para a fonte de dados. A CurrencyManager expõe três eventos : 
 Com estes eventos você pode ter um controle sobre o fluxo de dados do controle para a fonte de dados e vice e versa. | 
A seguir eu vou dar um exemplo prático de como você pode usar eventos para controlar o fluxo de dados.
No artigo - ADO.NET - Criando uma Cadastro de Clientes - eu estou fazendo a vinculação de dados ao arquivo Biblio.mdb e exibindo os dados da tabela Clientes. Na vinculação do campo Nascimento , se você não notou, a data esta sendo exibida no formato dd/mm/yyyy hh:mm:ss (ver figura 1.0). Vamos usar o evento Format para alterar este formato para dd/mm/yyyy de forma a ficar como na figura 2 abaixo
|  | 
    
     | 
| figura 1.0 | figura 2.0 | 
1- Para podermos fazer isto primeiro vamos selecionar o TextBox - Nascimento - e na sua caixa de propriedades - remover a vinculação padrão.
2- A seguir inclua a linha de código abaixo no ínicio do seu código:
Dim
WithEvents oBinding As Binding3- Agora no evento Load do formulário inclua o código abaixo:
| obinding = New Binding("Text", 
    dsClientes, "Clientes.Nascimento") txtNascimento.DataBindings.Add(oBinding) | - O código 
    cria um novo objeto binding declarado na linha de código anterior 
    (item 1) que vincula um campo Texto ("Text") usando a minha fonte de dados (dsClientes) 
    a propriedade "Clientes.Nascimento" - A seguir o objeto é incluido na coleção DataBindings das Caixas de Texto | 
4- Para alterar a formatação da data de nascimento vamos usar o código abaixo no evento Format do objeto oBinding declarado:
| Private
    Sub 
    obinding_Format(ByVal 
    sender As 
    Object, 
    ByVal e 
    As System.Windows.Forms.ConvertEventArgs)
    Handles 
    oBinding.Format e.Value = Format(e.Value, "dd/MM/yyyy") End Sub | 
Nota: para efetuar uma vinculação padrão o código é : txtNascimento.DataBindings.Add("Text",dsClientes,"Clientes.Nascimento")
Com isto demonstrei que você pode controlar o fluxo de dados usando o DataBinding no VB.NET.
A seguir iremos ver exemplos básicos da utilização do DataBindig no artigo :  Desvendando os segredos do Data Binding no VB.NET  - II 
   
Romanos 7:14 Porque bem sabemos que a lei é espiritual; mas eu sou carnal, vendido sob o pecado.
Romanos 7:15 Pois o que faço, não o entendo; porque o que quero, isso não pratico; mas o que aborreço, isso faço.
Romanos 7:16 E, se faço o que não quero, consinto com a lei, que é boa.
Romanos 7:17 Agora, porém, não sou mais eu que faço isto, mas o pecado que habita em mim.
             Gostou ?
  Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#