0

在 NgPrime turbo 表中,我有编辑功能。在服务器中保存数据后,我正在重新加载网格。但无法保留当前页面。如何将页码设置为网格?我找到了一种使用此功能获取当前页码的方法

 paginate(event) { 
let pageIndex = event.first/event.rows + 1;
 }

并通过将 this 属性添加到 table tag (onPage)="paginate($event)"。如何将页码设置为网格?

4

2 回答 2

2

看起来,您可以控制显示的第一行,而不是直接控制页码:

<p-table [columns]="cols" [value]="cars" [paginator]="true" [rows]="10" [first]="first">

在上述情况下,每页有 10 行,您将设置first为 0 以到达第一页,10 用于第二页,20 用于第三页,等等。

更新:

由于上述方法在事后更改页面不起作用(也许它仅适用于表的初始设置),您可以尝试以下类似的方法,它适用于现已弃用的 DataTable:

在 HTML 中:

<p-table #myTable [columns]="cols" [value]="cars" [paginator]="true" [rows]="10">

然后,在您的组件中:

@ViewChild('myTable') myTable: TurboTable;
    ...
this.myTable.first = desiredFirstRow;

我会借此机会将我的旧表格代码更新为 TurboTable,我很快就会知道这是否确实有效。

于 2018-03-19T06:57:05.327 回答
0

@kshetline 答案确实对我有用。
HTML

<p-table #dt [columns]="columnHeaders" [value]="batchList" [lazy]="true" (onLazyLoad)="lazyLoadNextBatch($event)" [paginator]="true" [rows]="recordsPerPageCount?.value" [totalRecords]="totalRecords" [responsive]="true">

打字稿

onRecordsPerPageCountChange() {
    this.totalRecords = 0;
    this.pageNavLinks = 0;
    this.myTable.first = 0; // <-- this did the work.
    this.lazyLoadNextBatch({ 'first': 0 });
}
lazyLoadNextBatch(event: LazyLoadEvent) {
    // calculate the page number from event.first
    this.loading = true;
    const pageNumber = Math.round(event.first / this.recordsPerPageCount.value) + 1;
    this.bmService.getBatchList(this.batchListStatus, pageNumber, this.recordsPerPageCount.value)
        .subscribe(response => {
            this.batchList = response.batches;
            // totalRecords is used to find the navigation links
            this.totalRecords = response.batches[0].TotalRowCount;
            this.pageNavLinks = Math.round(this.totalRecords / this.recordsPerPageCount.value);
            this.loading = false;
        });
}
于 2018-09-14T18:21:42.523 回答