Есть ли событие onScroll для ag-grid?

Я ищу событие прокрутки в ag-grid, я хочу знать, когда прокрутка достигает конца и загружает следующий набор строк, я знаю, если вы установите режим бесконечной прокрутки, тогда ag-grid вызывает метод getRows, но в мое приложение я не получаю сразу следующий набор строк, я делаю вызов на сервер и сервер отправляет клиенту отдельное сообщение с новым набором строк


person vikas mittal    schedule 12.03.2019    source источник


Ответы (3)


Существует событие сетки под названием «onBodyScroll», к которому вы можете прикрепить обработчик событий. Это событие несколько секретно, так как его не было в их типе GridOptions до версии 18, хотя оно и работает. см. этот комментарий: https://github.com/ag-grid/ag-grid-enterprise/issues/89#issuecomment-264477535

У них есть это событие в документе: https://www.ag-grid.com/javascript-grid-events/#miscellaneous

person wctiger    schedule 21.05.2019

Вы должны быть в состоянии сделать это (загрузить данные с сервера) в соответствии с приведенным ниже примером.

Прежде всего, определите свой dataSource.

const dataSource: IServerSideDatasource = {
   getRows: (params: IServerSideGetRowsParams) => this._getRows(params, [])
};
this.gridApi.setServerSideDatasource(dataSource);

Объявите метод _getRows следующим образом.

private _getRows(params: IServerSideGetRowsParams, data: any[]) {

  this.gridApi.showLoadingOverlay();

  service.getData(params)  // the payload your service understands
   .subscribe((result: any[]) => {
       params.successCallback(result, -1);
       params.failCallback = () => console.log('some error occured while loading new chunk of data');
       this.gridApi.hideOverlay();
     },
      error => this._serverErrorHandler(error)
  );
}

Это в значительной степени самоочевидно. Дайте мне знать, если вам что-то непонятно.

Кстати, я использовал typescript для примера, пример javascript будет примерно таким же для ag-grid-реакция

person Paritosh    schedule 13.03.2019
comment
Как я уже упоминал в своем вопросе, я не могу использовать getRows (режим бесконечной прокрутки), потому что клиент общается с сервером с помощью веб-сокета, а ответ приходит позже, я ищу событие, которое запускается, когда пользователь прокручивает до конца сетки - person vikas mittal; 13.03.2019
comment
@vikasmittal трудно визуализировать и понять вашу ситуацию, пока вы не поделитесь тем, что вы сделали, с помощью кода. Узнайте, как создать минимально воспроизводимый пример. - person Paritosh; 13.03.2019

Углубившись, я нашел идеальное решение этой проблемы.

Обратите внимание, здесь я использую AngularJS, но его очень легко понять.

onBodyScroll:function(params) {
            var bottom_px = $scope.gridOptions.api.getVerticalPixelRange().bottom;
            var grid_height = $scope.gridOptions.api.getDisplayedRowCount() * $scope.gridOptions.api.getSizesForCurrentTheme().rowHeight;
            if(bottom_px == grid_height)
            {
                alert('Bottom')
            }
        },
person Sandeep Sherpur    schedule 25.03.2021