是否可以基于列的数据对p:dataTable进行分页?

时间:2018-10-15 14:39:21

标签: primefaces

我正在使用Primfaces显示一组表格数据。是否可以对数据源进行分页,例如,第1页包含名称以“ A”开头的客户,第2页包含名称以“ B”开头的客户,依此类推...?

1 个答案:

答案 0 :(得分:1)

没有内置功能。

您需要做的是:

  1. 将LazyDataModel与自定义过滤器映射一起使用:https://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml |
  2. 添加一些内容以选择字母e.q. p:commandLink每个字母,可能还有一个显示全部的选项或一个selectOneMenu。 (如果您确实想将1映射到A等等,请看最后的注释。)像这样编辑您的分页模板:primefaces add another components to datatable paginator template
  3. 通过字符串扩展LazyDataModel的类,该字符串保存所选字母
  4. 每次单击都应将值发送到LazyDataModel并刷新表
  5. 在LazyDataModel的load方法中,您可以编辑数据库查询并按所选字母进行过滤以获取正确的列表,或者如果您没有数据库连接,则可以在Java代码中过滤列表。
  6. 如果您不想进行其他分页,请使用sortBy或filter将其关闭。
  7. 如果您不关闭客户名称过滤器,请注意也可以设置客户名称上的其他过滤器。

注意:如果您确实希望将1设为A,将2设为B,依此类推,也可以将页面映射到字母。然后,您只需要使用LazyDataModel的first和pageSize来计算用户请求的页面,并为适当的字母设置过滤器即可。