3

我有排序和过滤的动态列。我设法清除了过滤器,但根据 Primefaces 的说法,没有功能可以清除客户端 API 的排序。

我的.xhtml:

<p:dataTable id="tableId" value="#{statisticCreateBean.tableData}"
                    var="data" widgetVar="dataTbl"
                    rendered="#{not empty statisticCreateBean.tableData}">
    <p:columns id="columnId" value="#{statisticCreateBean.columnModel}"
                        var="column" sortBy="#{data[column.fieldName]}"
                        filterBy="#{data[column.fieldName]}">
            <f:facet name="header">
                    #{column.displayName}
            </f:facet>
            <h:outputText value="#{data[column.fieldName]}" />
    </p:columns>
</p:dataTable>

我的 Java 代码:

    Columns columns = (Columns)FacesContext.getCurrentInstance().getViewRoot().findComponent("statisticForm:tableId:columnId");
    columns.setSortBy(null);
    PrimeFaces.current().executeScript("PF('dataTbl').clearFilters();");

有没有办法清除动态列的排序?

4

1 回答 1

4

要正确重置排序和过滤器,请获取 Datatable 并调用reset.

DataTable datatable= (DataTable )FacesContext.getCurrentInstance().getViewRoot().findComponent("statisticForm:tableId");
datatable.reset();
于 2021-01-07T14:59:17.470 回答