Curso Genexus - Introdução a Web Panels A web panel é o objeto mais flexível dentre os oferecidos por GeneXus. Como já havíamos indicado, trata-se basicamente de uma página web que nos permite resolver várias funcionalidades, como solicitar dados ao usuário: pedir-lhe, por exemplo, que insira uma porcentagem... para aplicá-la como aumento a todos os preços dos voos... ou... pedir uma faixa de nomes, Para depois chamar (pressionando o botão ou a tecla Enter) um procedimento que execute as atrações que estão nessa classe. ou... simplesmente, abrir os dados mostrados por um data provider em uma variável do tipo coleção
... inserida no form (automaticamente associada a um controle do tipo grid). No entanto, também podemos abrir a informação diretamente do banco de dados - a informação de um cliente, por exemplo. Para isso, criamos uma web panel... ViewCustomerInfo
Na caixa de ferramentas são oferecidos todos os controles que podemos utilizar neste form. Devemos arrastar o controle Atributo/variável e escolher os atributos do cliente que queremos mostrar: (CustomerFullName é um atributo fórmula que mostra o sobrenome e o nome juntos; escolhemos também o endereço e o e-mail). Vemos que aparece automaticamente uma tabela para mostrá-los junto com suas descrições: Pressionamos F5 para executar...
Vemos que é aberta a informação... De qual cliente? Se formos à transação Customer... vemos que o último cliente cujos dados foram mostrados é Martin Faulkner. Programamos a web panel para que mostrasse os dados de um cliente, mas não lhe informamos qual. Para fazermos... Acrescentamos a regra parm...... especificando que o parâmetro recebido será o atributo CustomerId. Para recebê-lo em um atributo (em vez de uma variável), será realizado automaticamente um filtro por igualdade por este atributo. Teremos que chamar esta web panel de outro objeto que possa enviar o id do cliente desejado. Por exemplo, Outra web panel... SelectCustomer, que já tínhamos criado Executamos e vejamos o resultado... Primeiro, vejamos que clientes nós temos... por exemplo, o 2, Susan Brown... Devemos selecioná-la.
E pressionar o botão ou tecla Enter para ver seus dados... Podemos concluir, portanto, que no form de uma web panel as variáveis são utilizadas de forma pré-determinada como controles de entrada de dados (ou seja, o usuário poderá inserir um valor nelas). Já os atributos são utilizados como controles de saída (ou seja, abrem informações do banco de dados) Paremos a navegação desta web panel... O que a listagem de navegação está informando? Que para carregar a informação que pedimos na tela, é preciso acessar a tabela Customer do banco de dados, filtrando pelo valor CustomerId recebido por parâmetro. Consideremos tudo o que GeneXus infere apenas por colocar os atributos no form. E se agora quisermos mostrar essa mesma informação, mas de todos os clientes e não de apenas um? Façamos um save as...
Neste caso, teremos que colocar esses atributos em um grid. Ao arrastá-lo, abre-se automaticamente esta janela para escolher os atributos ou variáveis que queremos inserir nesse grid como colunas. Escolhemos por exemplo esse dois atributos... e fechamos. Apagamos os atributos soltos que tínhamos. Também apagamos a regra parm, já que agora mostraremos todos os clientes e não precisamos receber nenhum parâmetro. Pressionamos F5... e vemos como todos os clientes são mostrados..
Também podemos observar que os endereços, por serem do tipo de dados Address, são interpretados de maneira especial e clicando-se sobre um deles, localiza-se o endereço num mapa sem que nada tenha sido programado. Vejamos a listagem de navegação desta web panel... A única diferença em relação à anterior é que aqui não se está filtrando por cliente. Em qualquer um dos dois casos que vimos, por termos mencionado atributos no form, GeneXus encontrou a tabela a ser lida, percorrida, a tabela base exatamente igual a quando temos um for each.
No caso dessas web panels, há uma espécie de for each implícito que se executa para carregar as linhas do grid.