|
<ejs-grid [dataSource]='data | async' allowPaging= 'true' [pageSettings]='pageOptions' (dataStateChange)= 'dataStateChange($event)'>
</ejs-grid>
|
|
public dataStateChange(state: DataStateChangeEventArgs): void {
// if you want to send additional information then we suggest you to assign the object in state and access it in server
state.addparams = JSON.stringify({"pageNumber" : 1,"pageSize" : 10,"fieldNames" : "","sortOrder" : "ASC"})
this.service.execute(state); // here you can able to get the corresponding action details
}
public ngOnInit(): void {
this.pageOptions = { pageSize: 10, pageCount: 4 };
let state = { skip: 0, take: 10 }; // initial rendering
this.service.execute(state);
}
|
|
public execute(state: any): void {
this.getData(state).subscribe(x => super.next(x));
}
public getData(state: DataStateChangeEventArgs): Observable<DataStateChangeEventArgs> {
let pageQuery = '';
const takeQuery = state.take ? `$top=${state.take}` : null;
if (skipquery) {
pageQuery = `${skipquery}&`;
}
if (takeQuery) {
pageQuery = `${pageQuery}${takeQuery}`;
}
return this.http
.get(`${this.BASE_URL}?${pageQuery}&$count=true`)
.pipe(map((response: any) => response.json()))
.pipe(map((response: any) => {
return state.dataSource === undefined ? (<DataResult>{
// need to send data as result and count
result: response['value'],
count: parseInt(response['@odata.count'], 10),
}) : response['value'];
}))
.pipe(map((data: any) => data));
}
}
|