重置PrimeFaces DataTable状态(过滤,排序,分页)

时间:2013-08-19 11:46:59

标签: jsf-2 primefaces

我想重置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。

5 个答案:

答案 0 :(得分:5)

最后,我在标签ColumnsView.java上找到了隐藏在此示例http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml中的解决方案:

table.setValueExpression("sortBy", null);

答案 1 :(得分:3)

dataTable.setSortBy(null);

我正在使用PrimeFaces 4.0

答案 2 :(得分:1)

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

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("form:dataTableItem");
dataTable.setFirst(0);
dataTable.reset();
dataTable.setSortBy(null);

答案 3 :(得分:0)

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

dataTable.setSortBy(null);

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

答案 4 :(得分:-2)

private DataTable filtervalue;
getter and setter of filtervalue ..........
call resetValue(); method on datatable
as  filtervalue.resetValue();

希望它有效