Перетаскивание строки сетки Ag-сетки - Невозможно прочитать свойство forEach из undefined

На одном из наших веб-сайтов React мы реализовали ag-grid и включили группировку строк и функции перетаскивания строк.

При попытке перетащить строку из группы 1 в группу 50 (удаленная группа), в которой происходит прокрутка с автоматическим перетаскиванием, я получаю сообщение об ошибке в файле Aggrid js. Ниже приведена трассировка стека с консоли -

ag-grid-community.cjs.js:26975 Uncaught TypeError: Cannot read property 'forEach' of undefined at RowDragFeature.webpackJsonp../node_modules/ag-grid-community/dist/ag-grid-community.cjs.js.RowDragFeature.stopDragging (ag-grid-community.cjs.js:26975) at RowDragFeature.webpackJsonp../node_modules/ag-grid-community/dist/ag-grid-community.cjs.js.RowDragFeature.onDragStop (ag-grid-community.cjs.js:26966) at DragAndDropService.webpackJsonp../node_modules/ag-grid-community/dist/ag-grid-community.cjs.js.DragAndDropService.onDragStop (ag-grid-community.cjs.js:17368) at DragService.webpackJsonp../node_modules/ag-grid-community/dist/ag-grid-community.cjs.js.DragService.onUpCommon (ag-grid-community.cjs.js:31179) at DragService.webpackJsonp../node_modules/ag-grid-community/dist/ag-grid-community.cjs.js.DragService.onMouseUp (ag-grid-community.cjs.js:31174) at HTMLDocument.mouseUpEvent (ag-grid-community.cjs.js:31074)

Пожалуйста, предложите, как мне продолжить / исправить эту ошибку.


person user2899989    schedule 25.06.2020    source источник


Ответы (1)


Это может быть ошибка в обработчиках по умолчанию, которые предоставляет ag-grid. Я также получаю это на проекте, который начал сегодня. Вы можете поставить свои собственные обработчики для всех реквизитов, которые решили проблему для меня.

Я столкнулся с этим для сетки в сетку и сделал следующее. Если вы используете перетаскивание в сетке, вы сможете сделать что-то подобное, хотя похоже, что свойства имеют разные имена (например, onDragEnd вместо onDragStop). Это предполагает, что вы сами управляете состоянием и, следовательно, принимаете меры для dragEnd и т. Д.

Пример перетаскивания сетки в сетку:

const dropZoneParams = {
  onDragging: (args) => console.log('onDragging', {...args}),
  onDragEnter: (args) =>
    console.log('onDragEnter', {...args}),
  onDragLeave: (args) =>
    console.log('onDragLeave', {...args}),
  onDragStop: (args) => console.log('onDragStop', {...args}),
  getContainer: params.api.getRowDropZoneParams().getContainer,
}
person jdimmerman    schedule 26.06.2020
comment
Я пробовал это и не работал, пока не завершилось внутреннее перетаскивание, эти методы не вызываются. Я перемещаю строки в одной сетке, поэтому мне не нужно добавлять dropZoneParams. Проблема, похоже, в том, что в методе getRowNodes есть вызов this.isFromThisGrid (draggingEvent), который возвращает false, должно быть истинным, потому что строка из той же сетки. - person user2899989; 27.06.2020
comment
Вы пытались переопределить обработчики событий для перетаскивания в сетке (вместо добавления зоны перетаскивания)? - person jdimmerman; 27.06.2020
comment
да, и это вызывается после завершения обработки из ag-grid js. - person user2899989; 28.06.2020
comment
Это случилось со мной, вероятно, потому, что моя функция onDragging fn вызвала перерисовку некоторых ячеек таблицы, из-за чего источник события больше не был частью сетки. Установка fn только на console.log показала, что это так. Прокрутка может вызвать аналогичное поведение (перетаскиваемая строка больше не отображается, поэтому isFromGrid возвращает false). - person Spikolynn; 15.09.2020