serverSideDataSource triggering twice in ag-grid, When the filter set on session and reloading the window. The below method triggering twice serverSideDataSource(count: number) { return { getRows: (params) => { //add sortModel for dynamically created columns params.request.sortModel.forEach((sortItem) => { if (sortItem.colId.split('&').length > 1) { const sortModelObj = {}; sortItem.colId.split('&').forEach((subCol) => (sortModelObj[subCol] = { ...sortItem, colId: subCol })); params.request.sortModel = Object.values(sortModelObj); } }); const sortModel = Object.keys(params.request.sortModel); let where = this.whereBy; if (this.filterStateWhere.length !== 0) { where = [...this.whereBy, ...this.filterStateWhere]; const mainFilterModel = this.gridApi.getFilterModel(); const filterStateModel = JSON.parse(this.cacheSvc.getState('session', `${this.viewType}/${'FilterState'}`)); params.request.filterModel = { ...mainFilterModel, ...filterStateModel }; } const filterModel = Object.keys(params.request.filterModel) as string[]; this.payload = getDefaultPayload({ params, gridOptions: this.gridOptions, order: this.orderBy, where, select: this.selectBy }); this.payload.limit = this.gridOptions.paginationPageSize; // main server request if (filterModel.length !== 0) { this.filterChecks(params, filterModel, sortModel); } else { if (sortModel.length !== 0) { this.payload.offset = this.gridApi.paginationGetCurrentPage() > 0 ? params.request.startRow : 0; this.payload = this.applySortPayload(params.request.sortModel); } this.togglePagination(count); this.fetchItemsRequest(params, count); } } }; } Continue reading...