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



我有一个包含主面筛选功能的数据表。一些操作可以在表上完成(例如编辑)。在使用ajax完成用户操作后,将更新数据。它直接更新表,工作良好,如果我不过滤数据表,不幸的是,如果我使用它和编辑它。

这就是我的datatable的样子:

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

更新数据表后,您必须调用它的客户端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()"/>

添加Primefaces 5的答案。X,因为他们改变了调用widget var的方式:

几乎和Kerem Baydogan的回答一样,但有一点修改:

<p:commandButton value="Save"
                 actionListener="#{bean.save}"
                 update="@form"
                 oncomplete="PF('dataTableWidgetVar').filter()"/>

或者您可以使用:

清除所有过滤器
<p:commandButton value="Save"
                 actionListener="#{bean.save}"
                 update="@form"
                 oncomplete="PF('dataTableWidgetVar').clearFilters()"/>

对于大于或等于5的质面版本,您可以使用这段代码,它工作得很好

<p:dataTable var="page" value="#{yourBean.allData}" widgetVar="yourWidgetVarName"/>
<p:commandButton value="delete"
                 actionListener="#{yourBean.delete}"
                 update="@form"
                 oncomplete="PF('yourWidgetVarName').filter()"/>

如果您正在使用版本5的primefaces,只需创建表示单个数据行的数据类,以实现Serializable

相关内容

  • 没有找到相关文章

最新更新