I have a datable which includes the filter feature of primefaces. Some operations can be done on the table (e.g. edit). The datable will be updated after the user's operation is completed using ajax. It updates the table directly and works well, if I don't filter the datatable, unfortunately not if I use it and edit it.
That's how my datatable looks like:
<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">
and the Button which triggers the update
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"/>
After updating datatable you have to invoke it's client side filter()
method.
<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()"/>
For PrimeFaces versions older than 5, you should use
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"
oncomplete="dataTableWidgetVar.filter()"/>
Adding answer for Primefaces 5.x , since they changed the way for calling widget var:
Almost same as Kerem Baydogan's answer but with a little modification :
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').filter()"/>
Or you can clear filters at all with :
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').clearFilters()"/>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With