AgGrid 26 ServerSide DataSource does not stop loading rows

Viewed 404

Version: AgGrid 26.0.1

Problem: AgGrid does not display loaded rows, keeps firing requests to the backend with the same startRow (endRow argument changes to the last row number after first request is fired and remains the same afterwards), always shows the loading indicator.

My AgGrid options:

      <AgGridReact
        debug
        modules={AllModules}
        defaultColDef={defaultColDef}
        frameworkComponents={{ [CellRenderer.Action]: ActionCellRenderer, [CellRenderer.Button]: ButtonCellRenderer }}
        context={context}
        rowData={rows}
        rowModelType={onRowsFetch ? 'serverSide' : 'clientSide'}
        serverSideStoreType={ServerSideStoreType.Partial}
        serverSideDatasource={{ getRows }}
        rowBuffer={0}
        cacheBlockSize={50}
        maxBlocksInCache={shouldHideRow ? undefined : 100}
        blockLoadDebounceMillis={1000}
        maxConcurrentDatasourceRequests={1}
        infiniteInitialRowCount={1}
        suppressContextMenu
        colResizeDefault="shift"
        columnDefs={columnDefs}
        columnTypes={columnTypes.reduce((ac, a) => ({ ...ac, [a]: {} }), {})}
        onGridReady={onGridReady}
        onModelUpdated={resizeColumns}
        onGridSizeChanged={onGridSizeChanged}
        onFilterChanged={handleFilterChange}
        onSortChanged={handleSortChange}
        onToolPanelVisibleChanged={resizeColumns}
        rowSelection="multiple"
        suppressRowClickSelection
        suppressMovableColumns
        suppressColumnMoveAnimation
        suppressMenuHide
        sideBar={disableSideBar ? false : sideBarDef}
        alwaysShowVerticalScroll={!disableVerticalScroll}
        scrollbarWidth={disableVerticalScroll ? 0 : undefined}
      />

onGridReady:

  function onGridReady({ api, columnApi }: GridReadyEvent) {
    gridApi.current = api;
    gridColumnApi.current = columnApi;
    api.sizeColumnsToFit();
    api.setFilterModel({});
  }

My serverSideDatasource config (getRows):

  async function getRows({ request, successCallback, failCallback }: IServerSideGetRowsParams) {
    if (!onRowsFetch) {
      return;
    }

    try {
      const lastPageLoadedBefore = request.endRow >= lastRow.current && lastRow.current !== 0;
      const result = await onRowsFetch({
        startRow: request.startRow,
        endRow: lastPageLoadedBefore ? lastRow.current : request.endRow,
        sort: parseSortModel(request.sortModel),
        filter: parseFilterModel(request.filterModel),
      });
      lastRow.current = result.data.lastRow ?? 0;
      successCallback(result.data.content, request.endRow);
    } catch (error) {
      failCallback();
      throw error;
    }
  }

Everything worked fine with AgGrid v24. The only thing that has been changed since the version update was that I've added serverSideStoreType={ServerSideStoreType.Partial} to the grid options.

I have tried changing successCallback lastRow parameter to -1, 0, 1 and undefined but the requests keep firing no matter what. What am I missing?

0 Answers
Related