EasyUI Forum

General Category => EasyUI for jQuery => Topic started by: hande89 on November 04, 2014, 02:47:32 AM



Title: Copy treegrid row
Post by: hande89 on November 04, 2014, 02:47:32 AM
Any advice on copying a treegrid row including its children? I'd like to append new rows with same details.


Title: Re: Copy treegrid row
Post by: stworthy on November 04, 2014, 07:28:21 AM
Just call 'find' method to find a specified row.
Code:
var row = $('#tg').treegrid('find', id);
var node = $.extend(true,{},row);  // clone the row
console.log(node);


Title: Re: Copy treegrid row
Post by: hande89 on November 04, 2014, 09:00:23 AM
I'd like to append it to root level. But IDs are in conflict. So I should change them and remove parentId property from node if it's not a root node.


Title: Re: Copy treegrid row
Post by: hande89 on November 04, 2014, 11:47:47 AM
Found a rough solution:

Code:
var new_id = new_id || '';
var orig_new_id = new_id;
var rx = /"id":(\d+)/g;
var rx2 = /"_parentId":(\d+)/g;
var node = $('#tg').treegrid('getSelected');
var node_json = JSON.stringify(node);
node_json2 = node_json.replace(rx,function(){new_id = new_id+' '; return "\"id\":"+"\""+new_id+"\"";});
new_id = orig_new_id;
node_json2 = node_json2.replace(rx2,function(){new_id = new_id+' '; return "\"_parentId\":"+"\""+new_id+"\"";});
node = JSON.parse(node_json2);
delete node._parentId;
$('#tg').treegrid('append',{'data':[node]});

New ID could be a running number but I need it to come from database anyway.