Я использую Handsontable управление электронными таблицами с php и данными, сохраненными в mongodb. Когда копирование вставляет кучу данных в элемент управления, событие afterChage запускается с источником как «paste». Внутри этого я пытаюсь обновить значение (RowID) на конкретной ячейке (0), используя функцию instance.setDataAtCell (RowIndex, 0, vRowId)On Handsontable Как отключить действие «edit» при обновлении ячейки «setDataAtCell» внутри события «copyPaste»
afterChange: function(changes, source) {
console.log('Trigrd>>');
console.log('Source:'+source);
console.log('Changes:'+changes);
if (source == 'paste' || source == 'autofill' || (changes.length >1)) {
var minVal = changes[0][0];
var maxVal = changes[chLength][0];
for(var modifyRowIndex = minVal; modifyRowIndex <= maxVal ;modifyRowIndex++){
var xrowId = Math.random();
instance.setDataAtCell(modifyRowIndex, 0, xrowId, 'program');
}
}
}
если я пытаюсь вставить две строки данных в таблицу, на консоли мы видим, что функция afterChange запускается 3 раза.
Trigrd>>
Source:paste
Changes:[[0,1,'','xxxx'],[1,1,'','yyyy']]
Trigrd>>
Source:edit
Changes:[0,0,'','1232']
Trigrd>>
Source:edit
Changes:[1,0,'','23434']
Первый триггер для действия «вставить» и оставшиеся два триггера связано с командой «setDataAtCell». Это задерживает общее действие copyPaste. Несколько раз он застрял с большими данными copyPaste
У кого-нибудь есть идея пропустить здесь цикл редактирования.
Спасибо за ответ. Я уже решил проблему, используя тот же метод, который вы упомянули здесь «beforeChange». :) –