Primefaces 数据表重置分页
Posted
技术标签:
【中文标题】Primefaces 数据表重置分页【英文标题】:Primefaces datatable reset pagination 【发布时间】:2013-08-28 19:23:48 【问题描述】:我在搜索实用程序中使用带有分页器的 dataTable 组件,它运行良好,但在将分页器页面重置为第一页时出现问题。 例如,您在分页器的第 6 页上执行新搜索,dataTable 会重新加载新数据,但页码未重置为 1,它仍保留为 6。
我正在使用 PF 3.4.2。 有什么想法吗?
【问题讨论】:
显示您的搜索代码并尝试将update="myTableId"
添加到您的搜索组件
我的数据表在面板“displayResult”内,所以在命令按钮中我做了:<p:commandButton icon="ui-icon-search" value="Find" actionListener="#searchBean.searchCertif" update="displayResult"/>
你能发布你的代码吗?
我找到了解决方案,应该将它添加到命令按钮:onclick="wdg_dataTable.getPaginator().setPage(0);
请将此作为答案发布(您可以回答自己的问题),并将其设置为已接受。或者干脆删除这个问题。
【参考方案1】:
我使用 PF('dataTableWidgetVar').paginator.setPage(0); 解决了我的问题在 Primefaces 6.0 中
【讨论】:
在小部件变量名称周围放置 PF('') 对我有用【参考方案2】:我必须在后端解决这个需求。为了在不执行某种“重复刷新”的情况下解决问题,我确实实现了这个:
<p:commandButton ... update="dataTable" actionListener="#myController.bindingDataTable.setFirst(0)" oncomplete="someClientJS();" ... />
此代码假定前端的 dataTable
绑定到后端引用变量 myController.bindingDataTable
。 ActionListener
在 dataTable
刷新之前执行,因此此时分页设置为“0”作为第一行/记录的值(因此,第一页)。
【讨论】:
顺便说一句,我使用的是 PrimeFaces 5.2。 也可以使用 DataList。并且没有对服务器的不必要调用。谢谢!【参考方案3】:将以下 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
【讨论】:
不清楚是否需要 widgetWar 而不是 ID。 这样就行了。但是,它再次调用服务器进行刷新。如果我不希望服务器刷新,因为已经有一个明确的调用?【参考方案4】:我用 widgetVarDataTable.clearFilters(); 解决了在 primefaces 3.5 中, 和 PF('widgetVarDataTable').clearFilters();在素面 5.0 中
【讨论】:
以上是关于Primefaces 数据表重置分页的主要内容,如果未能解决你的问题,请参考以下文章
在 SelectOnemenu 上重置 JSF Primefaces 输入值
在primefaces autocomplete事件中将值重置为null