【问题标题】:Calculation about ( Showing n to n of total n ) in pagination分页中关于(显示 n 到 n 的总 n )的计算
【发布时间】:2017-10-25 16:48:35
【问题描述】:

primeng数据表分页中关于(显示n到n的n)的计算


我创建了一个自定义逻辑来显示剩余记录逻辑中的当前记录

如果表格行数是 10 并且总计数是在第二页上,那么我可以显示如下,

Showing 20 to 30 of 37

所以我尝试在 (onPage)="onPageChange($event)" 事件中手动执行此操作

onPageChange(e) {
        console.log(e);
        let currentpageCount = parseInt(e.first.toString().charAt(0)) + 1;
        let currentPageRows = e.rows;
        this.pageinationcount = 'Showing' + (parseInt(e.first.toString().charAt(0)) * parseInt(currentPageRows)) + ' to ' + (currentpageCount * parseInt(currentPageRows)) + ' of ' + this.errorLogList.length
    }

一切正常,但如果我的最后一页只有 7 条记录,但 e.rows 结果始终显示 10。我知道e.rows 从这个输入中工作,它在数据表中作为[rows]="10" 给出。但是在这种情况下,我们该如何解决呢?

【问题讨论】:

  • howvto correctly tag a question你能告诉我我哪里做错了吗?
  • 全部点击,阅读信息文本。第三个不适用
  • 转到此网址,了解什么是 primefaces 以及什么是启动 primefaces.org/primeng
  • 另外,priming 也不是很流行,所以如果我们想要回答,我们可以标记相关技术。
  • 嗯...,对不起,我认为应该这样做。 “相关”是这里的重要部分...... Angular 是 PrimeNG 的相关技术,PrimeFaces 是基于 JSF 的,并且不是基于角度的。 PrimeFaces 是他们的第一个框架并且他们为 PrimeNG 使用相同的 url 的事实并没有使 PrimeFaces 技术与 PrimeNG 或 Angular 相关......

标签: javascript angular typescript pagination primeng


【解决方案1】:

我已经手动完成了在(onpage)事件中传递dt.dataToRender.length 的操作

 <p-dataTable class="ui-widget-h1-header1" [value]="errorLogList" 
 [responsive]="true" [paginator]="true" [rows]="10"
 (onPage)="onPageChange($event, dt.dataToRender.length)" [globalFilter]="gb" 
 #dt [pageLinks]="3" [rowsPerPageOptions]="[10,20,25,30]">
 .
 .
 .
 .
</p-dataTable>

以下代码仅在行数为10 时才有效,但如果行数为20|25|30,则无法按预期工作

 onPageChange(e, pagecount) {
        console.log(e);
        let currentpageCount = parseInt(e.first.toString().charAt(0)) + 1;
        let calculateRow = parseInt(e.rows) - parseInt(pagecount)
        this.pageinationcount = parseInt(e.first.toString()) + 1
            + ' to ' + (parseInt(e.first.toString()) - calculateRow) + ' of ' + (this.errorLogList.length)

        let temp = 'Showing' + this.pageinationcount.toString();
        this.pageinationcount = temp;
    }

但是如果行数是 20|25|30|etc ,我很难处理。请以我的回答作为您回答的关键。

【讨论】:

    【解决方案2】:

    这个怎么样:

    let start = e.first + 1;
    let end = (e.first + e.rows) > this.errorLogList.length ? this.errorLogList.length : (e.first + e.rows);
    this.pageinationcount = 'Showing ' + start + ' to ' + end + ' of ' + this.errorLogList.length;
    

    稍微改动了 Aravind 的示例以供参考:http://plnkr.co/edit/oWrGziGmkwXfO4aK9xOp?p=preview

    【讨论】:

    • 我的荣幸:) .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2022-11-17
    • 2021-07-19
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多