Primefaces数据表重置分页

时间:2013-08-26 10:20:06

标签: primefaces datatable

我在搜索实用程序中使用了dataTable组件和paginator,该工具很好但有问题将paginator页面重置为第一页。 例如,你在分页器的第6页,你执行一个新的搜索,dataTable重新加载新数据,但页码不重置为1它保持在6。

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

4 个答案:

答案 0 :(得分:20)

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

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

其中 myWidgerVar 是DataTable的WidgetVar。

确保DataTable设置了WidgetVar。有关更多背景信息,请参阅this post by Optimus Prime.

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

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

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

答案 1 :(得分:9)

我用widgetVarDataTable.clearFilters()解决了;在primefaces 3.5中, 和PF('widgetVarDataTable')。clearFilters();在primefaces 5.0

答案 2 :(得分:5)

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

答案 3 :(得分:2)

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

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

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