Rafael Campos Gomes
Passar lista de um datatable para o jasper!!!
19/10/2015 16:47
Estou gerando relatórios com o plugin Jasper e tenho uma dúvida a respeito, gostaria da ajuda de você!
Minha página GSP hoje, gero um datatable com os registros do banco de dados! tenho em cima da pagina o botão do Jasper em PDF para gerar o relatório, só que da forma que eu desenvolvi, quando clico para gerar o pdf, ele faz uma nova busca no banco de dados trazendo os mesmo registros existentes no datatable da minha GSP para depois exportar.
Não existe uma forma de passar a lista do meu Datatable pela tag <g:jasperReport/> para que eu export a lista que já foi gerada para datatable?
Tags: <g:jasperReport/>, Jasper, Datatable, PDF, Grails
Na documentação no plugin diz que se você deixar a propriedade "reportData " em branco o plugin vai considerar a query dentro do relatorio e caso vc preencha o reportData
vai considerar o que você passa ali.
então... no seu service
def reportDef = JasperReportDef(name:'your_report.jasper', reportData : SEU DATA TABLE    fileFormat:JasperExportFormat.PDF_FORMAT )
Vou fazer o teste e te falo!!!
Mais na verdade não estou utilizando query dentro do relatório! O que eu estava planejando é pegar os registro que já estão na GSP!
Entendi. De qualquer forma você precisa primeiro passar esses dados do GSP para um service, seja ele o JasperService ou um service seu!
Direto do GSP não sei se tem como viu. Acho até que não seja possível .
Por que? É feita alguma modificação nestes dados por parte do usuário antes de executar o relatório? Ou você só quer economizar uma consulta no banco de dados?
Se é só pela consulta, SE isso realmente valer à pena, voce poderia guardar os registros na sessão
Agora se realmente você precisa pegar o que está na página e mandar para o relatório, você teria que passar os dados de volta para o server via requisição, e então fazer o que o Evandro falou
20/10/2015 07:54
Entendi! É uma lista enorme, então acredito que seria melhor pegar a lista já existente ! No Grails eu consigo devolver a lista de objetos de volta para o controller ou eu teria que fazer algum tratamento para pegar os registros?
Não existe isso de devolver... Veja bem:
Aqueles registros que foram carregados do banco e utilizados na renderização da view já não existem mais desde que o servidor devolveu a requisição para o navegador. Tudo o que sobrou foi o html renderizado NO CLIENTE, por isso ou você envia estes registros do cliente para o servidor na hora de gerar os relatórios (o que pode ser problematico já que você diz que é muita coisa) ou vê uma forma de fazer cache disso no servidor
Entendi Magno! Na verdade minha intenção seria fazer como acontece com o - https://editor.datatables.net/examples/advanced/exportButtons.html - ele gera o PDF com as informações do Datatable. Só que eu pensei em customizar o pdf utilizando o IREPORT por isso eu pensei no plugin do jasper e em salvar o pdf com os valores que já foram enviados para o cliente!!!