是否可以根据列的数据对 p:dataTable 进行分页?
Is it possible to paginate a p:dataTable based on a column's data?
我正在使用 Primfaces 显示一组表格数据。是否可以对数据源进行分页,例如,第 1 页包含名称以 "A" 开头的客户,第 2 页包含名称以 "B" 开头的客户等等...?
没有内置功能。
您需要做的是:
- 将 LazyDataModel 与自定义过滤器映射一起使用:https://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml |
- 向 select 字母 e.q 添加内容。每个字母 p:commandLink,可能还有显示全部或 selectOneMenu 的选项。 (如果你真的想将 1 映射到 A 等等,请看我最后的注释)。像这样编辑您的分页器模板:primefaces add another components to datatable paginator template
- A class 通过保存 selected 字母
的字符串扩展 LazyDataModel
- 每次点击都应将值发送到您的 LazyDataModel 并刷新 table
- 在 LazyDataModel 的加载方法中,您可以编辑数据库查询并按 selected 字母过滤以获得正确的列表,或者如果您没有数据库连接,则过滤列表中的列表java代码。
- 如果您不想要额外的分页、sortBy 或过滤器,请将其关闭。
- 如果您不关闭客户名称的过滤器,请注意也可以设置客户名称的其他过滤器。
注意:如果确实要1为A,2为B等,也可以将页面映射到字母上。那么你只需要通过LazyDataModel的first和pageSize计算出用户请求的是哪个页面,然后设置合适字母的过滤器即可。
我正在使用 Primfaces 显示一组表格数据。是否可以对数据源进行分页,例如,第 1 页包含名称以 "A" 开头的客户,第 2 页包含名称以 "B" 开头的客户等等...?
没有内置功能。
您需要做的是:
- 将 LazyDataModel 与自定义过滤器映射一起使用:https://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml |
- 向 select 字母 e.q 添加内容。每个字母 p:commandLink,可能还有显示全部或 selectOneMenu 的选项。 (如果你真的想将 1 映射到 A 等等,请看我最后的注释)。像这样编辑您的分页器模板:primefaces add another components to datatable paginator template
- A class 通过保存 selected 字母 的字符串扩展 LazyDataModel
- 每次点击都应将值发送到您的 LazyDataModel 并刷新 table
- 在 LazyDataModel 的加载方法中,您可以编辑数据库查询并按 selected 字母过滤以获得正确的列表,或者如果您没有数据库连接,则过滤列表中的列表java代码。
- 如果您不想要额外的分页、sortBy 或过滤器,请将其关闭。
- 如果您不关闭客户名称的过滤器,请注意也可以设置客户名称的其他过滤器。
注意:如果确实要1为A,2为B等,也可以将页面映射到字母上。那么你只需要通过LazyDataModel的first和pageSize计算出用户请求的是哪个页面,然后设置合适字母的过滤器即可。