我想重置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。
答案 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();
希望它有效