EasyUI Treegrid - метод вставки не обновляет дочернюю коллекцию
Я использую jQuery EasyUI TreeGrid в проекте.
У меня есть дерево, загруженное с некоторыми начальными данными. После этого мне нужно вставить новые строки в дерево, когда пользователь нажимает кнопку "Добавить". Обработчик нажатия кнопки add имеет следующий код и работает примерно так, как ожидалось:
var row = $treeGrid.treegrid('getSelected');
if (row) {
var obj = {
id: "x" + ++maxId,
code: "x" + maxId,
amount: 2
};
$treeGrid.treegrid('insert', {
after: row.id,
data: obj
});
$("#txtResult").text("Added a new row: " + obj.id);
}
Однако впоследствии, когда я проверяю дочерние элементы строки (где был добавлен новый дочерний элемент), он не включает вновь добавленную строку.
Я настроил jsFiddle, чтобы продемонстрировать проблему. Чтобы воспроизвести это:
Выберите строку на 2-м уровне и нажмите Добавить дочерний элемент. Новая строка будет добавлена в соответствии с кодом выше. Сообщение "строка добавлена" отображается под кнопками.
Выберите родителя и нажмите кнопку "Показать детей". Количество детей в выбранной строке отображается под кнопками.
После вставки строки я также попытался "acceptChanges" treegrid, но это все еще не решает проблему.
ОБНОВЛЕНИЕ: согласно ответу @saigitha-vijay, похоже, что использование метода добавления корректно обновляет базовую модель ( jsFiddle), однако всегда добавляет новую строку как последний дочерний элемент. Есть ли способ добавить новую строку в определенную позицию?
1 ответ
Вместо "вставить" используйте "добавить". В этом методе вы также можете передать родительский идентификатор.
пример,
$('#tt').treegrid('append',{
parent: node.id, // the node has a 'id' value that defined through 'idField' property
data: [{
id: '073',
name: 'name73'
}]
});
я изменил ваш код как,(это работает)
var obj = [{
id: "x" + ++maxId,
code: "x" + maxId,
amount: 2
}];
$treeGrid.treegrid('append', {
parent: row.id,
data: obj
});