Как динамически добавлять строки в данные вложенного дерева в табуляторе? - PullRequest
0 голосов
/ 28 февраля 2019

Для моего проекта мне нужно добавить новые дочерние строки в родительские строки в дереве данных на основе данных формы, отправленных пользователем.Я не смог найти пример того, как это сделать, в документации.Возможно ли это с помощью функции addRow ({...})?Как бы я объявил, какой родитель добавить дочернюю строку?Или мне нужно создать пользовательскую функцию, которая вставляет новую строку в объект JSON таблицы и перерисовывает таблицу?

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 февраля 2019

Решение, которое я использовал, - добавить новые объекты строк в копию массива _children родительской строки, а затем отправить обновление в родительскую строку.Для этого вам нужно найти родительскую строку, получить ее данные (которая будет включать в себя массив дочерних строк _children), добавить новую строку данных в _children и обновить данные родительской строки в таблице данных.

$("#add-child-row").click(function(){
    //Get values for child row form fields
    var childFields = $("#child-form").serializeArray().reduce(function(obj, item) {
        obj[item.name] = item.value;
        return obj;
    }, {});

    var newRow = {
        name: childFields.name,
        location: childFields.location,
        gender: childFields.gender,
        col: childFields.color,
        dob: childFields.dob,
    };

    //Find row to add child
    //searchRows() returns array
    //In my case, I am only expecting one matching row so use index 0
    var parentRow = table.searchRows("name","=","Oli Bob");

    //Get data for the parent row so we can update it's _children array
    var tempParentRowData = parentRow[0].getData();

    //Add new row to children array
    tempParentRowData._children.push(newRow);

    //Update data table row with new children array
    parentRow[0].update({_children:tempParentRowData._children});
});

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

...