为什么Ag-grid显示'? (问号)在使用服务器端渲染时分页?

Why Ag-grid display '?' (question mark) in pagination while Using Server Side rendering?

我正在使用 React Ag 网格服务器端分页。数据加载正确但有时显示“?”分页标记。

但是,如果我单击下一步,它会正确显示。

这是代码:

gridApi?.setServerSideDatasource({
      getRows: (params: IServerSideGetRowsParams) => {
        const { startRow, endRow, sortModel, filterModel } = params.request;
          refetch({
            result: 'ProjectSummary',
            startRow,
            endRow,
            tab: state.tab,
            filtergroup: JSON.stringify(filterModel),
            sortModel: JSON.stringify(sortModel?.length ? sortModel[0] : {}),
          }).then((response) => {
            if (response?.data) {
              const { datarows, total } = JSON.parse(response?.data?.body);
              if (response?.data?.statusCode === '200') {
                params?.success({
                  rowData: datarows,
                  rowCount: total,
                });
              }
            } else {
              params?.fail();
            }
          });
      }

到目前为止,我还没有找到任何直接的方法来解决这个问题,但有一个小窍门。这是解决方案。

定义这个函数:

const setLbLastRowOnPage = () => {
    if (!gridApi) {
      return;
    }
    const lbLastRowOnPageEl = document.querySelector(`[ref=\'lbLastRowOnPage\']`);
    const isLastPage = gridApi.paginationGetTotalPages() === gridApi.paginationGetCurrentPage() + 1;
    const endRow = isLastPage
      ? gridApi.paginationGetRowCount()
      : (gridApi.paginationGetCurrentPage() + 1) * gridApi.paginationGetPageSize();
    if (lbLastRowOnPageEl) {
      lbLastRowOnPageEl.innerHTML = endRow.toString();
    }
  };

现在,在useEffect中调用这个

useEffect(() => {
    setLbLastRowOnPage();
  }, [loading, gridApi]);