Alterando a exibição de um campo lookup
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. 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 se prenderá à concatenação dos conteúdos de todos os campos criados.
var showValue = '';
while (!this.ds.eof) {
showValue = this.ds.str('iCode') + ' - ' + this.ds.str('iFirstName') + ' ' +
this.ds.str('iLastName') + ', ' + this.ds.str('iAge');
this.addResult(this.ds.num('iKey'), this.ds.num('iClass'), showValue);
this.ds.next();
}
Com esse código feito e corretamente posicionado ele vai ser processado no momento da montagem da grid lookup lhe dando o resultado esperado.