J'ai une datable qui inclut la fonction de filtrage des primefaces. Certaines opérations peuvent être effectuées sur la table (par exemple, modifier). La table de données sera mise à jour une fois l'opération de l'utilisateur terminée à l'aide d'ajax. Il met à jour le tableau directement et fonctionne bien, si je ne filtre pas la table de données, malheureusement pas si je l'utilise et le modifie.
Voilà à quoi ressemble ma table de données:
<p:dataTable id="dataTable" var="row"
value="#{bean.value}"
filteredValue="#{bean.filteredValue}"
paginator="true" rows="25" paginatorPosition="bottom"
rowKey="${row.id}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
editable="true">
et le bouton qui déclenche la mise à jour
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"/>
Après la mise à jour datatable vous devez appeler sa méthode filter()
côté client.
<p:dataTable widgetVar="dataTableWidgetVar" id="dataTable" var="row"
value="#{bean.value}"
filteredValue="#{bean.filteredValue}"
paginator="true" rows="25" paginatorPosition="bottom"
rowKey="${row.id}"
editable="true">
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"
oncomplete="PF('dataTableWidgetVar').filter()"/>
Pour les versions PrimeFaces antérieures à 5, vous devez utiliser
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"
oncomplete="dataTableWidgetVar.filter()"/>
Ajout de la réponse pour Primefaces 5.x, car ils ont changé la façon d'appeler le widget var:
Presque la même que la réponse de Kerem Baydogan mais avec une petite modification:
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').filter()"/>
Ou vous pouvez effacer les filtres avec:
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').clearFilters()"/>