DataBinding e trabalho em camadas

O recurso de vincular os objetos do formulário a uma origem de dados, tal como um dataset, é um poderoso recurso de RAD (desenvolvimento rápido de aplicações)

Quando estamos desenvolvendo em camadas, porém, temos um pequeno problemas. As instruções que realizam o dataBinding são inseridas no InitializeComponent do form, enquanto que a chamada do componente que irá trazer os dados fica normalmente no load.

A chamada do componente tipicamente seria algo como:

 

ds1=obj.lerdados()

 

O problema é que no momento em que fazemos isso estamos destruindo a instância do dataset existente na variável ds1 e inserindo nesta variável um novo dataset, vindo do componente.

O problema disso é que os databindings neste momento já haviam sido realizados com um ponteiro apontando para o dataset anterior. Ao recebermos o novo, todos os databindings se perdem.

Para contornar este problema podemos fazer o seguinte:

 

dim dstmp as dataset

 

dstmp=obj.lerdados

ds1.merge(dstmp)

 

Com esse código utilizamos uma variável temporária para receber o dataset do componente e depois realizamos um merge. Desta forma o ponteiro de objeto original não é destruido, apenas importa os dados do dataset vindo do componente.