Amigos,
não e possível exibir um valor vindo de uma lista dentro de um panelGrid ?
Amigos,
não e possível exibir um valor vindo de uma lista dentro de um panelGrid ?
Como está teu código?
Assim
<p:panelGrid style="margin-top:20px" >
<f:facet name="header">
<p:row>
<p:column colspan="1">Relatório</p:column>
<p:column colspan="2">Valores 1</p:column>
<p:column colspan="2">Valores 2</p:column>
<p:column colspan="2">Valores 2</p:column>
</p:row>
<p:row>
<p:column colspan="1" >Nome Relatório</p:column>
<p:column colspan="1">a</p:column>
<p:column colspan="1">b</p:column>
<p:column colspan="1">a</p:column>
<p:column colspan="1">b</p:column>
<p:column colspan="1">a</p:column>
<p:column colspan="1">b</p:column>
</p:row>
</f:facet>
<p:row >
<p:column>Nome do Elemento 1</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="#{relatorioMbean.valor}" />
</f:facet>
</p:column>
<p:column>99.999.99</p:column>
<p:column>99.999.99</p:column>
<p:column>99.999.99</p:column>
<p:column>99.999.99</p:column>
<p:column>99.999.99</p:column>
</p:row>
</p:panelGrid>
Oi Thiago, usa outro componente do primefaces que foi feito para isso (DataTable):
http://www.primefaces.org/showcase/ui/datatableBasic.jsf
<h:form>
<p:dataTable var="value" value="#{relatorioMbean.suaLista}" style="margin-top:20px">
<p:column headerText="Relatório">
<h:outputText value="#{value.nome}" />
</p:column>
<p:column headerText="Valores 1">
<h:outputText value="#{value.valor1}" />
</p:column>
<p:column headerText="Valores 2">
<h:outputText value="#{value.valor2}" />
</p:column>
<p:column headerText="Valores 3">
<h:outputText value="#{value.valor3}" />
</p:column>
</p:dataTable>
</h:form>
Espero ter ajudado !
Sua diga e valida e inclusive fiz um teste com esse componente,
mas o problema e que tenho que mostrar na tela uma grid (assim como uma tela do EXCEL, com as celulas vazias) e com o dataTable isso acontece apenas depois que exibir os valores dentro das celulas.
Tem como exibir as celulas do dataTable assim que a tela for exibida ?
Oi Thiago,
Isso realmente é uma restrição (“estético”) do Primefaces, normalmente em outros componentes quando você seta a altura da tabela ele preenche a tabela com linhas vazias até o limite de altura que você determinou, isso realmente não acontece com o Primefaces. Eu busquei muito uma forma de fazer isso, pois o cliente queria que as linhas em branco fossem mostradas e eu não consegui fazer. O que o Primefaces tem que eu acho legal é o atributo “emptyMessage” que você escolhe o valor de uma String para aparecer na primeira linha da tabela quando a lista está vazia.
O que você pode fazer também , mas que é bem “pobre” e eu não aconselho é setar espaços em branco na String em vários atributos da lista para aparecer linhas vazias na hora da renderização. Só que depois toda vez que essa lista mudar você terá que manejar a quantidades de linhas em branco conforme a altura da tabela. Resumindo : Furada. Se alguém souber outra maneira ? … ou aceita do jeito que o Primefaces é, e pronto.
Um abraço.
Gustavo
Gustavo,
com as tags JSF eu consigo criar uma grid com as células e exibir os valores dentro dessas celulas ? Tem algum exemplo ?
O exemplo que eu citei acima faz isso
Seguindo seu exemplo ficou conforme abaixo,
mas não esta exibindo as células como se fosse uma planilha excel antes de consultar os dados para exibir na tela
O que esta faltando ?
<p:dataTable id="idR" value="#{relatMbean.relat}" var="value" emptyMessage=" " style="margin-top:20px">
<h:column>
<f:facet name="header">
<h:outputText value="vlr 1" />
</f:facet>
<h:outputText value="#{value.vlr}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="vlr 2" />
</f:facet>
<h:outputText value="#{value.vlr1}" />
</h:column>
</p:dataTable>
Foi o que eu disse em cima, só vai aparecer as linhas da tabela (igual planilha de Excel) quando a lista estiver preenchida, o Primefaces não cria linhas em branco quando não ha dados para ser mostrado. Como eu disse acima você pode é sertar dentro de um for varios objetos com valores em branco, mas não é nada aconselhável.
Posta o método que você popula a lista.
Esta ai
public String gerarRelat(){
RelatorioBO relatorioBO = new RelatorioBO();
try {
RelatorioMbean relatorioMbean = (RelatorioMbean) getSessionMap().get("relatorioMbean");
SimpleDateFormat formato = new SimpleDateFormat("ddMMyyyy");
String dataMovto = null;
dataMovto = formato.format(relatorioMbean.getDataMovto());
relatoriosTO = relatorioBO.consultaRelat(dataMovto, relatorioMbean.getCodProduto());
relatorioMbean.setRelatoriosTO(relatoriosTO) ;
} catch (Exception e) {
e.printStackTrace();
}
return "exibirRelatorio";
}
A lista que popula o grid é relatoriosTO, não é ?
Então o seu codigo estava errado , o correto é :
<p:dataTable id="idR" value="#{relatMbean.relatoriosTO}" ...>
Esta assim, apenas alterei para tentar facilitar o entendimento
<p:dataTable id="idR" value="#{relatorioMbean.relatoriosTO}" var="relatorio" emptyMessage=" " style="margin-top:20px">
<h:column>
<f:facet name="header">
<h:outputText value="vlr 1" />
</f:facet>
<h:outputText value="#{relatorio.vlr1}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="vlr 2" />
</f:facet>
<h:outputText value="#{relatorio.vlr2}" />
</h:column>
</p:dataTable>
Thiago tenta fazer assim & amp ;nbsp;
<h:column>
<f:facet name="header">
<h:outputText value="vlr 1" />
</f:facet>
<h:outputText value="#{relatorio.vlr1}" />
& ;nbsp; <!-- mesmo que nulo apresenta a cedula -->
</h:column>
Não deu certo Robson
Não deu certo Robson, alguém tem alguma outra sugestão ?