分页中计算(显示总n中的n到n)

时间:2017-05-25 06:25:30

标签: javascript angular typescript pagination primeng

在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"。但在这种情况下我们如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这个怎么样:

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

答案 1 :(得分:0)

我在(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,我很难处理。请将我的答案作为答案的关键。