Le tri ne fonctionne pas dans datatable dans PrimeFaces?
Le tri ne fonctionne pas dans le datatable dans PrimeFaces. S'il vous plaît suggérer.
Voir ci-dessous mon .fichier xhtml
<h:form>
<p:dataTable style="width: 60%" id="dt1" value="#{bean.list}" var="entry" first="0" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15" emptyMessage="No cars found with given criteria" >
<f:facet name="header">
<h2>Cars View</h2>
</f:facet>
<p:column sortBy="#{entry.carno}" filterBy="#{entry.carno}">
<f:facet name="header">
<h:outputText value="Car Number" />
</f:facet>
<h:outputText value="#{entry.carno}"></h:outputText>
</p:column>
<p:column sortBy="#{entry.carsettings['car-model']}" filterBy="#{entry.carsettings['car-model']}">
<f:facet name="header">
<h:outputText value="Car Model"/>
</f:facet>
<h:outputText value="#{entry.carsettings['car-model']}"></h:outputText>
</p:column>
<p:column sortBy="#{entry.carsettings.year}" filterBy="#{entry.carsettings.year}">
<f:facet name="header">
<h:outputText value="Car Year"/>
</f:facet>
<h:outputText value="#{entry.carsettings.year}"></h:outputText>
</p:column>
<p:column sortBy="#{entry.carsettings.color}" filterBy="#{entry.carsettings.color}">
<f:facet name="header">
<h:outputText value="Car Color"/>
</f:facet>
<h:outputText value="#{entry.carsettings.color}"></h:outputText>
</p:column>
</p:dataTable>
</h:form>
@Sean
Regardez ci-dessous le code
Liste des Voitures
<ui:composition template="/template.xhtml">
<ui:define name="content">
<f:view>
<f:event type="preRenderView" listener="#{MyBackingBean.load}"></f:event>
<center>
<h1>Car View</h1>
<h:outputText value="No data found" style="font-size: 15px;font-family: Arial, Verdana,Helvetica, sans-serif" rendered="#{MyBackingBean.noDataExist}"></h:outputText>
<h:form id="dataform1">
<p:dataTable var="item" value="#{MyBackingBean.dataList}" dynamic="true" paginator="true" rows="2" id="table" style="width:60%"
rendered="#{!MyBackingBean.noDataExist}" >
<p:column sortBy="#{item.id}" filterBy="#{item.id}">
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{item.id}" />
</p:column>
<p:column sortBy="#{item.carsettings['car-color']}" filterBy="#{item.carsettings['car-color']}">
<f:facet name="header">
<h:outputText value="Color" />
</f:facet>
<h:outputLink target="_blank" value="http://#{item.carsettings['car-color']}">
<h:outputText value="#{item.carsettings['car-color']}" />
</h:outputLink>
</p:column>
<p:column sortBy="#{item.carsettings.model}" filterBy="#{item.carsettings.model}">
<f:facet name="header">
<h:outputText value="Model" />
</f:facet>
<h:outputText value="#{item.carsettings.model}" />
</p:column>
<p:column sortBy="#{item.carsettings.manufacturer}" filterBy="#{item.carsettings.manufacturer}">
<f:facet name="header">
<h:outputText value="Manufacturer" />
</f:facet>
<h:outputText value="#{item.carsettings.manufacturer}" />
</p:column>
</p:dataTable>
</h:form>
</center>
</f:view>
</ui:define>
</ui:composition>
</h:body>
Le tri ne fonctionne pas dans le code ci-dessus
S'il vous plaît aider
source d'informationauteur user617966 | 2011-02-16
Vous devez vous connecter pour publier un commentaire.
Mon expérience, c'est que les primefaces backing bean (ViewScoped!) doit détenir son propre Liste de lignes. Ainsi, par exemple, si vous interrogez la base de données chaque fois que vous demandez l'
p:dataTable:value
le tri ne fonctionne pas.Solution: la Collecte de la liste à partir de la Base de données et de les conserver dans une Liste locale de la variable dans le backing bean.
Le Problème est:
De tri est effectué par le
<p:dataTable/>
àPhaseId.APPLY_REQUEST_VALUES
sur la liste, avec le<f:event type"preRenderView"/>
vous rechargez la liste àPhaseId.RENDER_RESPONSE
et donc vous avez perdu le tri.Solution: utiliser
<f:event type="postAddToView"/>
Cela permettra de recharger la liste à PhaseId.RESTORE_VIEW avant le tri est fait par
<p:dataTable/>
.Testé avec PrimeFaces Version 3.1.1 et Mojarra 2.1.8
Si vous remplissez votre table dans la lecture de tri ne fonctionnent pas (comme décrit ci-dessus).
Vous devriez vous mettre dans votre getter comme:
Vous pouvez ensuite reset(actualiser) de votre "cash" par les barques à fond plat tableDataList = null; si vous avez l'habitude de votre datatabele actualisé.
Mon Service, il y avait:
mais que c'était faux, parce que quand j'étais appel getAllPlayers() à partir de la table
J'ai reçu de DAO données mises à jour, mais toujours pas ordonné. Au lieu de cela, j'ai créé la Liste de champ et la méthode de mise à jour de la Liste
la méthode que je suis en cours d'exécution sur le haricot initialisation
et après Ajouter, de Supprimer ou de Modiffy la Liste
Maintenant mon Service a
et qui a résolu mon problème avec le tri des données dans Primefaces table.
J'ai eu un problème de tri lorsque mon backing bean a été sessionScoped. Pas sûr de ce que votre problème, mais si vous cliquez sur le bouton de tri et rien ne se passe, essayez de changer votre portée pour @ViewScoped.
avez-vous essayé @SessionScoped? il fonctionne très bien pour moi, espérons que cette aide.
Je ne sais pas si c'est votre cas. Il y a un primefaces question. Un bug sur le tri de la datatable. Jetez un oeil ici:
https://code.google.com/archive/p/primefaces/issues/2476
Il y a quelques solutions de contournement:
vous pouvez utiliser un lazyDataModel pour votre datatable, il fonctionne.
vous pouvez forcer l'ordre de tri.
Dans votre datatable attraper le genre d'événement
Dans votre managed bean vous définissez une commande par chaîne à ajouter à votre requête