2015-08-19 1 views
0

Я использую 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

У кого-нибудь есть идея пропустить здесь цикл редактирования.

ответ

0

Если вы все еще ищете решение, я думаю, что этот поможет вам.

У меня была проблема, как ваша, и мне удалось разрешить его путем внесения изменений на beforeChange и не в afterChange:

beforeChange : function(changes, source){ 
    if (source == 'paste'){ 
     var nrChanges = changes.length; 
     for (var i = 0; i < nrChanges; i++) 
      if (changes[i][1] == _CB) // get cell where you want to control 
       changes[i][3] = false; // here you add your value 
    } 
} 

и afterChange вы получите значения, которые отличают его ...

+0

Спасибо за ответ. Я уже решил проблему, используя тот же метод, который вы упомянули здесь «beforeChange». :) –

0

извинения. Сначала я ответил с источником === 'paste' vs source === 'edit', но я вижу, что вы уже получили это.

Смежные вопросы