2013-08-19 49 views
8

我想重置PrimeFaces數據表的過濾器,排序和分頁狀態。不幸的是,這樣做並不容易。特別重設分類狀態是困難的。重置PrimeFaces數據表狀態(過濾,排序,分頁)

我現在做了,直到爲:

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

最後,我找到了解決辦法,這隱藏着樣品http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml在標籤ColumnsView.java

table.setValueExpression("sortBy", null); 
+0

我可以證實,與Primefaces 5.3 dataTable.setValueExpression( 「sortBy」,NULL)和dataTable.setSortBy(NULL);一起導致在列標題中沒有指定排序的DataTable。 – alfonx

3
dataTable.setSortBy(null); 

我使用PrimeFaces 4.0

+0

我可以使用Primefaces 5.3 dataTable.setValueExpression(「sortBy」,null)和dataTable.setSortBy(null)來確認。一起導致在列標題中沒有指定排序的DataTable。 - alfonx剛剛編輯 – alfonx

0

首先,我重新排序狀態中的其他回答:

dataTable.setSortBy(null); 

但是,這並沒有重置顯示的代碼在我的桌子。它仍然顯示先前過濾的結果,因爲我已將數據表中的filteredValue屬性設置爲視圖範圍的bean中的字段。我通過將我的filteredValue字段設置爲value字段來解決該問題,將當前過濾結果設置爲完整數據集。

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

希望工程

+1

與已有的問題(這是關於排序)相比,這是一個怎樣的改進......請發佈'真實'的代碼.. – Kukeltje