Search results

Exporting Grid in Server in Angular Grid component

24 May 2022 / 2 minutes to read

The Grid have an option to export the data to PDF in server side using Grid server export library.

Server dependencies

The Server side export functionality is shipped in the Syncfusion.EJ2.GridExport package, which is available in Essential Studio and following list of dependencies is required for Grid server side PDF exporting action.

  • Syncfusion.EJ2
  • Syncfusion.EJ2.GridExport

Server configuration

The following code snippet shows server configuration using ASP.NET Core Controller Action.

To Export the Grid in server side, You need to call the serverPdfExport method for passing the Grid properties to server exporting action.

Copied to clipboard
    public ActionResult PdfExport([FromForm] string gridModel)
        GridPdfExport exp = new GridPdfExport();
        Grid gridProperty = ConvertGridObject(gridModel);
        return exp.PdfExport<OrdersDetails>(gridProperty, orddata);

    private Grid ConvertGridObject(string gridProperty)
       Grid GridModel = (Grid)Newtonsoft.Json.JsonConvert.DeserializeObject(gridProperty, typeof(Grid));
       GridColumnModel cols = (GridColumnModel)Newtonsoft.Json.JsonConvert.DeserializeObject(gridProperty, typeof(GridColumnModel));
       GridModel.Columns = cols.columns;
       return GridModel;

    public class GridColumnModel
        public List<GridColumn> columns { get; set; }
        public IActionResult UrlDatasource([FromBody]DataManagerRequest dm)
            IEnumerable DataSource = OrdersDetails.GetAllRecords();
            DataOperations operation = new DataOperations();
            int count = DataSource.Cast<OrdersDetails>().Count();
            return dm.RequiresCounts ? Json(new { result = DataSource, count = count }) : Json(DataSource);
Copied to clipboard
import { Component, OnInit, ViewChild } from '@angular/core';
import { ToolbarItems, GridComponent } from '@syncfusion/ej2-angular-grids';
import { DataManager, UrlAdaptor } from '@syncfusion/ej2-data';
import { ClickEventArgs } from '@syncfusion/ej2-navigations';

selector: 'app-root',
template: `<ejs-grid #grid id='Grid' [dataSource]='data' [toolbar]='toolbar' height='273px'(toolbarClick)='toolbarClick($event)'>
                <e-column field='OrderID' headerText='Order ID' textAlign='Right' width=120></e-column>
                <e-column field='CustomerID' headerText='Customer ID' width=150></e-column>
                <e-column field='ShipCity' headerText='Ship City' width=150></e-column>
                <e-column field='ShipName' headerText='Ship Name' width=150></e-column>
export class AppComponent implements OnInit {

public data: DataManager;
public toolbar: ToolbarItems[];

public dataManager: DataManager = new DataManager({
    url: 'Home/UrlDatasource',
    adaptor: new UrlAdaptor()

public grid: GridComponent;

ngOnInit(): void { = this.dataManager;
    this.toolbar = ['PdfExport'];
toolbarClick(args: ClickEventArgs): void {
    if ( === 'Grid_pdfexport') { // 'Grid_pdfexport' -> Grid component id + _ + toolbar item name

Note: Refer to the GitHub sample for quick implementation and testing from here.