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?