Alterando a exibição de um campo lookup

Introdução

Quando se tem uma classe que será exibida em uma grade lookup, o framework adota alguns campos como padrão e os exibe nesta grade. Mas nem sempre essa é a real necessidade do processo, pois algumas classes fogem desse padrão e acabam por ter uma grade pouco intuitiva ou de difícil interpretação.

X-FIND

Como você já imagina, teremos que criar um x-find para fazer com que a grade lookup saia do jeito que queremos, lembrando que o finder deve ser criado na mesma classe do lookup. Nesse registro temos disponível o método addResult que popula um DataSet que será usado para a grid lookup. Então imaginemos que eu tenho uma classe com 4 campos, são eles: iCode, iFirstName, iLastName e iAge. E agora imaginem também que eu tenho um cadastro e preciso que na grade lookup apareçam todos esses campos. Podemos começar criando o meu DataSet.

if (!this.ds) {

this.ds = connection.cloneLocalCacheByClass(classKey, session.userKey);

this.ds.indexFieldNames = 'iCode';

this.ds.indexFieldNames = 'iFirstName';

}

Temos o nosso DataSet indexado por código e por primeiro nome, mas ainda não definimos o que vai ser exibido. Como você já sabe para fazer isso teremos que usar o método addResult. Lembrando que todas as funcionalidades disponíveis no x-find podem ser utilizadas, mas para esse manual vou apenas me prender à concatenação dos conteúdos de todos os campos que criei.

var showValue = '';

while (!this.ds.eof) {

showValue = this.ds.icode + ' - ' + this.ds.ifirstname + ' ' + this.ds.ilastname + ', ' +

this.ds.iage;

this.addResult(this.ds.ikey, this.ds.iclass, showValue);

this.ds.next();

}

É isso, com esse código feito e corretamente posicionado ele vai ser processado no momento da montagem da grid lookup lhe dando o resultado esperado. No caso desse exemplo minha grid teria linhas como essa: '021 - Leandro Gualter, 25'.

Bom Trabalho!