Табулятор — программно установить фокус и присвоить значение определенной ячейке

#javascript #tabulator

#javascript #табулятор

Вопрос:

Я использую tabulator.js который каждый раз, когда пользователь редактирует ячейку ( cellEdited:function ), вызывает функцию для сохранения определенного значения в БД и после этого обновляет (перезагружает) всю таблицу.

Что я хочу сделать, так это сохранить индекс строки и столбца в переменной перед сохранением. После обновления табулятора фокус ячейки будет применен к конкретной ячейке, которая была раньше.

Есть ли какая-либо функция для прямого доступа к значению ячейки? Нравится tableName.setValue(rowId, ColId, value);

моя типичная настройка таблицы:

 function setup_table(dataset){

table = new Tabulator(document.getElementById("qc_table"), {data:dataset,layout:"fitColumns",addRowPos:"bottom",index:"ID",
     keybindings:{"navNext" :'tab("9")'},
             
columns:[{title: "ID", field: "ID", headerSort:false, width: 80}, 
         {title: "title1", field: "f1",width: 80,editor:"input"},
         {title: "title2", field: "f2",width: 80,editor:"input"},
         {title: "title3", field: "f3",width: 80,editor:"input"}],

  
         cellEdited:function(cell){
    
         // -- HERE GET ROW INDEX AND COLUMN INDEX BEFORE SAVE-- 
         
         // SAVE TABLE TO DB
         saveTable().then(function(done){
         
         // CODE TO REFRESH TABLE
         
         // -- HERE APPLY FOCUS TO THE PREVIOUS EDITED CELL --
         });
  
         }
 });
}
 

Есть идеи?
Спасибо за ваше время!

Ответ №1:

Не должно быть необходимости обновлять таблицу, вы можете просто вызвать функцию setValue для компонента ячейки, переданного в cellEdited обратный вызов.

 cellEdited:function(cell){
    // SAVE TABLE TO DB
    saveTable().then(function(done){
        cell.setValue("whatever value you want")
    });
}