10

我想重置 PrimeFaces DataTable 的过滤器、排序和分页状态。不幸的是,没有简单的方法可以做到这一点。尤其是重置排序状态很困难。

到目前为止我所做的是:

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(componentId);
if (dataTable != null) {
    dataTable.setSortOrder("ascending");  // reset sortOrder
    dataTable.setFirst(0);                // reset page
    dataTable.setFilteredValue(null);     // reset filter
    dataTable.setFilters(null);
}

我正在使用 PrimeFaces 3.4.1。

4

5 回答 5

7

最后,我找到了解决方案,隐藏在这个示例http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml on tab中ColumnsView.java

table.setValueExpression("sortBy", null);
于 2013-08-19T11:55:29.910 回答
3
dataTable.setSortBy(null);

我正在使用 PrimeFaces 4.0

于 2013-10-04T07:08:05.817 回答
3

在 LazyDataModel 负载中,我使用以下代码调用该方法:

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("form:dataTableItem");
dataTable.setFirst(0);
dataTable.reset();
dataTable.setSortBy(null);
于 2019-06-25T19:22:39.320 回答
0

首先,我像其他答案一样重置排序状态:

dataTable.setSortBy(null);

但是,这并没有为我重置表中显示的代码。它仍在显示先前过滤的结果,因为我已将数据表filteredValue上的属性设置为视图范围 bean 中的字段。我通过将我filteredValue的字段设置为value字段,将当前过滤的结果设置为完整的数据集来解决该问题。

于 2014-10-01T14:38:37.477 回答
-2
private DataTable filtervalue;
getter and setter of filtervalue ..........
call resetValue(); method on datatable
as  filtervalue.resetValue();

希望它有效

于 2015-11-20T09:57:47.140 回答