<p:dataTable value="#{gestionComptes.allComptes}" var="item" tableStyle="width:auto" > <p:column width="40"> <f:facet name="header"> <h:outputText value="Id"/> </f:facet> <h:outputText value="#{item.id}"/> </p:column> <p:column width="300"> <f:facet name="header"> <h:outputText value="Nom"/> </f:facet> <h:outputText value="#{item.nom}"/> </p:column> <p:column style="text-align:right;" width="60"> <f:facet name="header"> <h:outputText value="Solde"/> </f:facet> <h:outputText value="#{item.solde}"> <f:convertNumber pattern="###,###,##0"/> </h:outputText> </p:column> </p:dataTable>
Remarque : Quand on réduit la taille d’une table PrimeFaces, par exemple avec tableStyle="width:auto"
, l'en-tête de la table (qui peut contenir les boutons pour passer de page en page si on ajoute paginator="true"
dans <p:dataTable>
) occupe encore toute la largeur de la page.
Si c'est gênant, 2 solutions :
.ui-datatable { display: table; } .ui-datatable table { table-layout: auto !important; }
<p:panelGrid id="forautowidth" columns="1"> --- DataTable ici ---X </p:panelGrid>