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!