2013-08-19 35 views
8

Tôi muốn đặt lại trạng thái bộ lọc, sắp xếp và phân trang của một DataTable PrimeFaces. Thật không may, không có cách nào dễ dàng để làm như vậy. Đặc biệt việc đặt lại trạng thái sắp xếp là khó khăn.Đặt lại trạng thái DataFaces DataTable (lọc, sắp xếp, phân trang)

Những gì tôi đã làm cho đến bây giờ là:

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); 
} 

Tôi đang sử dụng PrimeFaces 3.4.1.

Trả lời

5

Cuối cùng, tôi tìm thấy giải pháp, ẩn trong mẫu này http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml trên tab ColumnsView.java:

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

Tôi có thể khẳng định rằng với Primefaces 5.3 dataTable.setValueExpression ("SortBy", null) và dataTable.setSortBy (null); cùng nhau dẫn đến một DataTable không có phân loại được chỉ định trong các tiêu đề cột. – alfonx

3
dataTable.setSortBy(null); 

Tôi đang sử dụng PrimeFaces 4,0

+0

Tôi có thể xác nhận rằng với Primefaces 5.3 dataTable.setValueExpression ("sortBy", null) và dataTable.setSortBy (null); cùng nhau dẫn đến một DataTable không có phân loại được chỉ định trong các tiêu đề cột. - alfonx vừa chỉnh sửa – alfonx

0

Trước tiên tôi thiết lập lại trạng thái loại như trong khác câu trả lời:

dataTable.setSortBy(null); 

Tuy nhiên, điều này không đặt lại các mã được hiển thị trong bảng cho tôi. Nó vẫn hiển thị các kết quả được lọc trước đó vì tôi đã đặt thuộc tính filteredValue trên datatable của tôi cho một trường trong một bean có khung nhìn. Tôi đã khắc phục sự cố đó bằng cách đặt trường filteredValue của mình thành trường value, đặt kết quả được lọc hiện tại thành tập dữ liệu hoàn chỉnh.

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

Hy vọng nó hoạt động

+1

Làm thế nào là anwer này là một cải tiến so với những gì đã có trong câu hỏi (đó là về phân loại) .... Và xin vui lòng đăng 'thực' mã .. – Kukeltje

Các vấn đề liên quan