web-dev-qa-db-fra.com

La mise à jour Ajax ne fonctionne pas, lors de l'utilisation du filtre sur p: dataTable

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"/>
27
Johnny2012

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()"/>
47
Kerem Baydoğan

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()"/>
16
Al-Mothafar