2013-08-26 56 views
10

Tôi đang sử dụng thành phần dataTable với trình chọn trang trong tiện ích tìm kiếm hoạt động tuyệt vời nhưng gặp sự cố khi đặt lại trang trình chuyển trang thành trang đầu tiên. ví dụ bạn đang ở trang 6 của người tạo trang và bạn thực hiện tìm kiếm mới, dataTable được tải lại với dữ liệu mới nhưng số trang không được đặt lại thành 1 vẫn còn trên 6.Thủ tục đặt lại trang có thể đặt lại dữ liệu

Tôi đang sử dụng PF 3.4.2. bất kỳ ý tưởng nào?

+0

hiển thị mã * tìm kiếm * của bạn và thử thêm 'update =" myTableId "' vào thành phần tìm kiếm của bạn – Daniel

+0

Datatable của tôi nằm trong bảng điều khiển "displayResult", vì vậy trong nút lệnh tôi đã làm: ' ' – callafa

+0

Can bạn đăng mã của bạn? –

Trả lời

19

Thêm javascript sau vào hành động mà cập nhật mô hình của DataTable:

onclick="myWidgetVar.getPaginator().setPage(0);" 

đâu myWidgerVar là WidgetVar cho DataTable.

Đảm bảo rằng DataTable có tập hợp WidgetVar. Để biết thêm ngữ cảnh, hãy xem this post by Optimus Prime.

Ở trên làm cho lưới điện thực hiện cuộc gọi để làm mới dữ liệu bằng các bộ lọc hiện có. Nếu bạn muốn một cách rõ ràng lưới điện để nạp dữ liệu mới từ một trang, bạn có thể thiết lập lại các DataTable về phía máy chủ

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("dialogSelectionForm:carSelectDialogTable"); 
dataTable.reset(); 

Reference - http://forum.primefaces.org/viewtopic.php?f=3&t=5807

+0

Không phải là nó đã được đề cập ở bình luận thứ tư? –

+0

Không rõ rằng widgetWar thay vì ID là cần thiết. – 8bitjunkie

+3

Điều đó thực hiện điều đó. Tuy nhiên, nó làm cho một cuộc gọi đến máy chủ một lần nữa để làm mới. Điều gì xảy ra nếu tôi không muốn làm mới máy chủ vì đã có một cuộc gọi thực hiện điều đó một cách rõ ràng? – divinedragon

7

tôi giải quyết với widgetVarDataTable.clearFilters(); trong các nguyên tố 3.5, và PF ('widgetVarDataTable'). clearFilters(); trong các nguyên tố 5.0

2

Tôi phải giải quyết nhu cầu này ở phía sau. Để giải quyết vấn đề mà không cần thực hiện một số loại "refresh trùng lặp" Tôi đã thực hiện điều này:

<p:commandButton ... update="dataTable" actionListener="#{myController.bindingDataTable.setFirst(0)}" oncomplete="someClientJS();" ... /> 

Mã này giả định dataTable trong front-end được liên kết với các biến tham chiếu back-end myController.bindingDataTable. ActionListener thực thi trước khi dataTable được làm mới, vì vậy trong thời điểm đó, phân trang được đặt bằng '0' làm giá trị cho hàng/bản ghi đầu tiên (do đó, trang đầu tiên).

+0

BTW, tôi đang sử dụng PrimeFaces 5.2. –

+0

Cũng có thể với DataList. Và không có cuộc gọi không cần thiết đến máy chủ. Cảm ơn bạn! – marcel

2

Tôi đã giải quyết được sự cố của mình bằng cách sử dụng PF ('dataTableWidgetVar'). Paginator.setPage (0); trong Primefaces 6.0