首页 文章

Primefaces过滤后的数据表排序

提问于
浏览
1

我有一个p:dataTable存储已处理表单的结果,我执行以下操作:

  • 填写表单值 .

  • 提交 .

  • 填充数据表 - 过滤任何列 .

  • 更改表单值 .

  • 提交 .

  • 数据表填充了新结果 .

  • 对任何列进行排序 - 显示来自#3的过滤结果 .

我有一个过滤值的arraylist,但我没有在bean中做任何事情 . 在提交时,我正在调用一个actionListener,它将dataTable转换为primefaces.components.datatable.DataTable,然后在我处理表单之前调用它上面的resetValue()(请参阅下面的代码片段) .

我已经尝试了多种方法来重置,清除和更新dataTable,但我无法解决上述问题 . 仅供参考,这是我的p:dataTable标签:

<p:dataTable
            id="resultsDataTable"
            rendered="#{entityReportBean.isResultsPopulated}"
            var="change"
            value="#{entityReportBean.entityChangeDto}"
            styleClass="resultsPanel"
            rows="100"
            paginator="true"
            paginatorPosition="top"
            paginatorTemplate="#{PreviousPageLink}  Previous  {CurrentPageReport}  Next  {NextPageLink}"
            filterEvent="enter"
            filteredValue="#{entityReportBean.filteredResults}" >

这是actionListener:

public void onSubmit() {
            FacesContext context = FacesContext.getCurrentInstance();
            DataTable resultsTable = (DataTable) context.getViewRoot().findComponent("results:resultsDataTable");
            resultsTable.resetValue();
                ...

我是JSF / Primefaces的新手,所以可能会有一些我不知道的基本操作 . 有什么建议?

1 回答

  • 1

    所以我意识到在我的actionListener中尝试做任何事都没有意义,因为没有在sort上调用它 . 所以我在dataTable上添加了一个ajax 'sort'事件,并在监听器中添加了 resultsTable.updateValue(entityChangeDto); . 现在一切都很好 .

相关问题