小编典典

在p:dataTable上使用过滤器时,Ajax更新不起作用

ajax

我有一个datable,其中包括primefaces的过滤器功能。可以在表上执行某些操作(例如,编辑)。在使用ajax完成用户操作之后,将更新datable。如果不过滤数据表,它将直接更新表并运行良好,不幸的是,如果我使用它并对其进行编辑,则不会。

这就是我的数据表的样子:

    <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">

和触发更新的按钮

<p:commandButton value="Save"
                        actionListener="#{bean.save}"
                        update=":form"/>

阅读 249

收藏
2020-07-26

共1个答案

小编典典

更新后 的数据表 ,你必须调用它的客户端的filter()方法。

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

对于早于5的PrimeFaces版本,应使用

<p:commandButton value="Save"
                 actionListener="#{bean.save}"
                 update=":form"
                 oncomplete="dataTableWidgetVar.filter()"/>
2020-07-26