我在搜索实用程序中使用了dataTable组件和paginator,该工具很好但有问题将paginator页面重置为第一页。 例如,你在分页器的第6页,你执行一个新的搜索,dataTable重新加载新数据,但页码不重置为1它保持在6。
我正在使用PF 3.4.2。 任何想法?
答案 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();
答案 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'作为第一行的值/记录(因此,第一页也是如此)。