Проблема в том, что я не могу заставить ag-grid-react автоматически отображать пользовательские компоненты для loadOverlay и noRowsOverlay (то есть управляемые самой сеткой). Я сделал все, как описано в документации.
Вот мои варианты:
frameworkComponents = {{
customOverlayLoading: CustomOverlayLoading,
customOverlayNoRows: CustomOverlayNoRows,
}}
loadingOverlayComponent = "customOverlayLoading"
noRowsOverlayComponent = "customOverlayNoRows"
Интересно то, что он работает для строковой модели clientSide, например при использовании prop rowData = {undefined}
- loading или rowData = {[]}
- noRows.
Но когда я заменяю rowData на rowModelType = "serverSide"
, сетка не распознает новые компоненты для наложения.
В документации нет упоминания о том, что эта вещь работает только с строковой моделью clientSide. Так что я ожидаю, что это должно сработать. Я могу заставить это работать через API-интерфейс сетки. Но я ожидаю от этой функции, что она должна обрабатывать загрузку и noRows автоматически для каждой из строковых моделей. Проблема с использованием API заключается в том, что нет флага, указывающего, загружается он или нет.
есть репродукция stackblitz. Для проверки serverSide rowModel требуется корпоративная версия https://stackblitz.com/edit/ag-grid-ro-model?embed=1&file=index.js
Когда вы используете rowModelType='serverSide'
, вам нужно вызвать overlays
самостоятельно внутри getRows()
, где вы реализуете datasource
.
gridApi.showNoRowsOverlay(); // show NoRowsOverlay
params.successCallback([], 0); // Pass empty array, Zero for lastRow
Это будет работать. :)
Проверьте, получили ли вы какие-либо строки обратно, если да, hideOverlay и передайте данные и lastRow соответственно.
не могли бы вы воспроизвести вашу проблему на plunk или stackblitz? Пройдите, как создать минимальный воспроизводимый пример