Paging in Angular Pivotview component
27 Aug 202524 minutes to read
The paging feature in the Pivot Table component is designed to handle large datasets efficiently by dividing the data into manageable pages. This prevents performance issues associated with rendering large amounts of data at once, allowing users to navigate through rows and columns page by page.
To enable paging, set the enablePaging
property to true. Paging can be configured in the code-behind during the initial rendering of the component using the pageSettings
property. This allows you to define the initial page setup for rows and columns. The key properties within pageSettings
include:
-
currentRowPage
: Allows user to set the current row page number to be displayed in the pivot table. -
currentColumnPage
: Allows user to set the current column page number to be displayed in the pivot table. -
rowPageSize
: Allows user to set the total number of records to be displayed on each page of the pivot table’s row axis. -
columnPageSize
: Allows user to set the total number of records to be displayed on each page of the pivot table’s column axis.
Pager UI
When paging is enabled, a built-in pager UI appears at the bottom of the Pivot Table by default. This user-friendly interface enables seamless navigation across row and column axis pages using navigation buttons or an input box, and allows dynamic page size adjustments via dropdown menus.
You can also change the position, visibility, compact view, and template of the row and column pagers by using the pagerSettings
.
In order to see and use the pager UI, insert the
PagerService
module into the pivot table using the@NgModule.providers
section.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
position: 'Bottom',
enableCompactView: false,
showColumnPager: true,
showRowPager: true,
columnPageSizes: [5, 10, 20, 50, 100],
rowPageSizes: [10, 50, 100, 200],
isInversed: false,
showColumnPageSize: true,
showRowPageSize: true
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Show pager UI at top or bottom
The Pivot Table component allows you to configure the placement of the pager UI to match your layout preferences. You can display the pager UI either at the top or bottom of the pivot table by setting the position
property within the pagerSettings
configuration. By default, the pager UI appears at the bottom, but setting the position property to Top places it above the pivot table. This can be ideal for layouts where navigation controls are preferred at the top for better visibility or alignment with other UI elements.
The following code demonstrates how to configure the pager UI to appear at the top of the pivot table:
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
position: 'Top'
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Inverse pager
The Pivot Table allows you to toggle the positions of the row and column pagers in the pager UI. By default, the row pager appears on the left side of the pager UI, and the column pager appears on the right. To swap these positions—displaying the column pager on the left and the row pager on the right—set the isInversed
property to true within the pagerSettings
configuration.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
isInversed: true
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Compact view
The Pivot Table provides a compact view for the pager UI, displaying only the previous and next navigation buttons to minimize the interface. To enable the compact view, set the enableCompactView
property to true within the pagerSettings
configuration. This streamlined layout focuses on essential navigation controls, ideal for layouts requiring a simplified paging experience.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
enableCompactView: true
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Show or hide paging option
The Pivot Table allows you to control the visibility of the row and column pagers in the pager UI using the showRowPager
and showColumnPager
properties within the pagerSettings
configuration. By default, both row and column pagers are visible in the pager UI. To hide either the row pager or the column pager, set the corresponding property to false. This allows you to display only the necessary navigation controls based on your layout requirements.
The following code demonstrates how to hide the row pager by setting the showRowPager
property to false:
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
showRowPager: false
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Show or hide page size
The Pivot Table allows you to control the visibility of the “Rows per page” and “Columns per page” dropdowns in the pager UI using the showRowPageSize
and showColumnPageSize
properties within the pagerSettings
configuration. These dropdowns display a list of predefined or user-defined page sizes, enabling you to adjust the number of rows or columns displayed per page at runtime. By default, both dropdowns are visible in the pager UI. To hide either the “Rows per page” or “Columns per page” dropdown, set the corresponding property to false.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
showColumnPageSize: false,
showRowPageSize: false
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Customize page size
The Pivot Table allows you to specify a list of page sizes for the “Rows per page” and “Columns per page” dropdowns in the pager UI using the rowPageSizes
and columnPageSizes
properties within the pagerSettings
configuration. By default, the “Rows per page” dropdown includes page sizes of 10, 50, 100, and 200, while the “Columns per page” dropdown includes page sizes of 5, 10, 20, 50, and 100. To define a different set of page sizes, assign an array of numbers to the rowPageSizes
or columnPageSizes
properties.
The following example sets the “Rows per page” dropdown with page sizes of 10, 20, 30, 40, and 50, and the “Columns per page” dropdown with page sizes of 5, 10, 15, 20, and 30:
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit } from '@angular/core';
import { IDataSet, PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor, Query, ReturnOption } from '@syncfusion/ej2-data';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings"></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
position: 'Bottom',
enableCompactView: false,
showColumnPager: true,
showRowPager: true,
columnPageSizes: [5, 10, 15, 20, 30],
rowPageSizes: [10, 20, 30, 40, 50],
isInversed: false,
showColumnPageSize: true,
showRowPageSize: true
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Template
The Pivot Table allows you to define a custom layout for the pager UI using the template
property within the pagerSettings
configuration. By default, the pager UI displays built-in navigation controls. To replace these with custom HTML elements, assign the ID of the custom elements to the template
property. This enables you to create a unique pager interface that aligns with your application’s design requirements.
This following example shows how to create a custom template for both row and column pagers. First, include the necessary HTML code in your index.html
file and assign its ID to the template
property. Then, during the dataBound
event, the Syncfusion Pager
control is appended to the designated HTML elements. You can configure the pager by setting properties like pageSize
, totalRecordsCount
, and currentPage
. When you click on a custom row or column pager, the currentRowPage
and currentColumnPage
properties in pageSettings
are updated, enabling navigation with the custom pager.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview'
import { Component, OnInit, ViewChild } from '@angular/core';
import { PivotView, PagerSettings, PageSettings, PagerService } from '@syncfusion/ej2-angular-pivotview';
import { GridSettings } from '@syncfusion/ej2-pivotview/src/pivotview/model/gridsettings';
import { DataManager, WebApiAdaptor } from '@syncfusion/ej2-data';
import { Pager } from '@syncfusion/ej2-grids';
import { isNullOrUndefined } from '@syncfusion/ej2-base';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';
@Component({
imports: [
PivotViewAllModule,
PivotFieldListAllModule
],
standalone: true,
selector: 'app-container',
template: `<ejs-pivotview #pivotview id='PivotView' height='350' [dataSourceSettings]=dataSourceSettings [width]=width [gridSettings]='gridSettings' enablePaging="true" [pageSettings]="pageSettings" [pagerSettings]="pagerSettings" (dataBound)='dataBound()'></ejs-pivotview>`,
providers: [PagerService]
})
export class AppComponent implements OnInit {
public dataSourceSettings?: DataSourceSettingsModel;
public remoteData?: DataManager;
public width?: string;
public gridSettings?: GridSettings;
public pageSettings?: PageSettings;
public pagerSettings?: PagerSettings;
public rowPager?: Pager;
public columnPager?: Pager;
@ViewChild('pivotview', { static: false })
public pivotGridObj?: PivotView;
dataBound() {
this.updateTemplate();
}
updateTemplate() {
if (!isNullOrUndefined(this.rowPager as Pager)) {
this.rowPager?.destroy();
this.rowPager = undefined;
}
this.rowPager = new Pager({
pageSize: this.pivotGridObj?.pageSettings.rowPageSize,
totalRecordsCount: this.pivotGridObj?.engineModule.rowCount,
currentPage: this.pivotGridObj?.pageSettings.currentRowPage,
pageCount: 5,
click: this.rowPageClick.bind(this)
});
this.rowPager.appendTo('#row-pager');
if (!isNullOrUndefined(this.columnPager as Pager)) {
this.columnPager?.destroy();
this.columnPager = undefined;
}
this.columnPager = new Pager({
pageSize: this.pivotGridObj?.pageSettings.columnPageSize,
totalRecordsCount: this.pivotGridObj?.engineModule.columnCount,
currentPage: this.pivotGridObj?.pageSettings.currentColumnPage,
pageCount: 5,
click: this.columnPageClick.bind(this)
});
this.columnPager.appendTo('#column-pager');
}
rowPageClick(args: any) {
this.pivotGridObj!.pageSettings.currentRowPage = args.currentPage;
}
columnPageClick(args: any) {
this.pivotGridObj!.pageSettings.currentColumnPage = args.currentPage;
}
ngOnInit(): void {
this.remoteData = new DataManager({
url: 'https://bi.syncfusion.com/northwindservice/api/orders',
adaptor: new WebApiAdaptor,
crossDomain: true
});
this.width = '100%';
this.pageSettings = {
rowPageSize: 10,
columnPageSize: 5,
currentColumnPage: 1,
currentRowPage: 1
} as PageSettings;
this.pagerSettings = {
template: '#template'
} as PagerSettings;
this.gridSettings = { columnWidth: 120 } as GridSettings;
this.dataSourceSettings = {
dataSource: this.remoteData,
expandAll: true,
filters: [],
columns: [{ name: 'ProductName', caption: 'Product Name' }],
rows: [{ name: 'ShipCountry', caption: 'Ship Country' }, { name: 'ShipCity', caption: 'Ship City' }],
formatSettings: [{ name: 'UnitPrice', format: 'C0' }],
values: [{ name: 'Quantity' }, { name: 'UnitPrice', caption: 'Unit Price' }]
};
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Syncfusion Angular Pivot Grid</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<style>
#loader {
color: #008cff;
font-family: 'Helvetica Neue', 'calibiri';
font-size: 16px;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
.e-pivot-pager {
display: flex;
}
.pager-label {
color: #9e9e9e;
margin-right: 10px;
}
#row-pager {
margin-right: 10px;
}
</style>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body style="margin-top: 125px">
<script id="template" type="text/x-template">
<div class="pager-label">Row Pager: </div>
<div id="row-pager" class="e-pagertemplate"></div>
<div class="pager-label">Column Pager: </div>
<div id="column-pager" class="e-pagertemplate"></div>
</script>
<app-container>
<div id='loader'>Loading....</div>
</app-container>
</body>
</html>
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));