datatable - Primefaces LazyModel 数据表始终要求first=0 pageSize=10

标签 datatable indexing primefaces

我正在使用 LazyDataModel 填充一个表格,其中包含 33 个项目(一长串部件的子集,可以增长或缩小),每页 10 页。表格减速度如下

<p:dataTable var="spare" value="#{sitePartController.selectParts}" paginator="true" lazy="true"
                                 currentPageReportTemplate="(Entries: {startRecord} - {endRecord} of {totalRecords}, Page: {currentPage}/{totalPages})"
                                          paginatorTemplate="{CurrentPageReport}{FirstPageLink}{PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                                          rows="10" selection="#{sitePartController.selectedParts}"
                                          paginatorAlwaysVisible="false"
                                          dynamic="true"
                                          >

分页工作正常,用 33 个项目 4 页 1-10 等填充 currentPageTemplate。当我按下链接时,所有分页输出都会正确更改(第 2/4 页等)。然而表中的数据没有改变,只是继续显示记录0-9。我的重写 Load 方法如下。

selectParts = new LazyDataModel() {

        @Override
        public List<SitePart> load(int first, int pageSize, String string, boolean bln, Map map) {
            return getSiteSpares(first,first+pageSize);
        }

    };
    int totalRowCount = getSparesCount();
    selectParts.setRowCount(totalRowCount);

当我在加载方法中停止调试时,无论我选择哪个数据表分页链接; first 始终为 0,page 为 10(如预期)。我如何让数据表发送正确的第一个索引,或者我在过去 6 个小时的谷歌搜索和尝试各种替代方案中错过了一些基本的东西。

最佳答案

不确定它是否会导致问题,但不应该是:

selectParts = new LazyDataModel<SitePart>(){

关于datatable - Primefaces LazyModel 数据表始终要求first=0 pageSize=10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747315/

相关文章:

linq - 将数据集转换为 IQueryable<T> 或 IEnumerable<T>

c# - 获取筛选后的 DataGrid 中选定行的索引

jquery - Primefaces 模态对话框位于 IE 中的媒体组件下方

javascript - 如何设置消息到 p :messages component through jQuery?

mysql - 如何使用 JSF 和 PrimeFaces 将上传的文件作为 Blob 存储在 mysql 数据库中

jquery - 我想在单击按钮时在 DataTable 中填充数据,默认情况下它应该显示没有可用数据

c# - 使用 LINQ 对 DataTable 中的数据进行分组

c# - 以相反顺序循环数据集

sql-server - SQL Server 检查约束以防止特定的重复项

无法添加到 C 中的字符串文字以移动其索引