【问题标题】:Primefaces datatable reset paginationPrimefaces 数据表重置分页
【发布时间】: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);
  • 请将此作为答案发布(您可以回答自己的问题),并将其设置为已接受。或者干脆删除这个问题。

标签: primefaces datatable


【解决方案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 中

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2014-05-19
    • 2012-12-05
    • 2016-05-07
    • 2013-03-24
    • 2019-07-13
    • 2015-07-19
    • 2015-11-09
    相关资源
    最近更新 更多