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...
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 Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#