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.bindingDataTableActionListenerdataTable 刷新之前执行,因此此时分页设置为“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 数据表重置分页的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PrimeFaces 数据表自定义分页器

使用分页在primefaces数据网格上更改页面时更新组件

在 SelectOnemenu 上重置 JSF Primefaces 输入值

在primefaces autocomplete事件中将值重置为null

在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段

primefaces 实时滚动是不是与延迟加载兼容