12

我在搜索实用程序中使用带有分页器的 dataTable 组件,效果很好,但是在将分页器页面重置为第一页时遇到问题。例如,您在分页器的第 6 页上执行新搜索,dataTable 会重新加载新数据,但页码未重置为 1,它仍为 6。

我正在使用 PF 3.4.2。任何想法?

4

4 回答 4

24

将以下 javascript 添加到更新 DataTable 模型的操作中:

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

其中myWidgerVar是 DataTable 的 WidgetVar。

确保 DataTable 具有 WidgetVar 集。有关详细信息,请参阅Optimus Prime 的这篇文章。

以上导致网格调用以使用现有过滤器刷新数据。如果您明确希望网格从第一页加载新数据,您可以在服务器端重置数据表

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

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

于 2013-10-10T15:27:29.510 回答
10

我用 widgetVarDataTable.clearFilters(); 解决了 在 primefaces 3.5 和 PF('widgetVarDataTable').clearFilters(); 在素面 5.0

于 2014-06-30T14:20:14.500 回答
6

我使用 PF('dataTableWidgetVar').paginator.setPage(0); 解决了我的问题 在 Primefaces 6.0 中

于 2016-06-07T15:16:45.820 回答
2

我必须在后端解决这个需求。为了在不执行某种“重复刷新”的情况下解决问题,我确实实现了这个:

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

此代码假定dataTable前端中的 绑定到后端引用变量myController.bindingDataTable。在刷新ActionListener之前执行,因此此时分页设置为“0”作为第一行/记录的值(因此也是第一页)。dataTable

于 2015-11-04T00:50:53.660 回答