EasyUI Forum
June 15, 2024, 01:56:59 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Treegrid reloading with saving the state of the tree  (Read 10293 times)
ildar
Newbie
*
Posts: 2


View Profile
« on: January 06, 2013, 04:20:18 AM »

Hello, when I execute treegrid reload() function all nodes of the treegrid has collapsed. Is it possible to save current state of the tree? I load nodes of each level by AJAX.
Logged
stworthy
Administrator
Hero Member
*****
Posts: 3581


View Profile Email
« Reply #1 on: January 06, 2013, 06:57:26 PM »

You need to set these states manually. The code below demonstrate how to set the data states when loading data.
Code:
$('#tg').treegrid({
loadFilter: function(data){
var opts = $(this).treegrid('options');
var originalData = $(this).treegrid('getData');
if (originalData){
setState(data);
}
return data;

function setState(data){
for(var i=0; i<data.length; i++){
var node = data[i];
var originalNode = findNode(node[opts.idField], originalData);
if (originalNode){
node.state =originalNode.state;
}
if (node.children){
setState(node.children);
}
}
}

function findNode(id, data){
var cc = [data];
while(cc.length){
var c = cc.shift();
for(var i=0; i<c.length; i++){
var node = c[i];
if (node[opts.idField] == id){
return node;
} else if (node['children']){
cc.push(node['children']);
}
}
}
return null;
}
}
});

Logged
ildar
Newbie
*
Posts: 2


View Profile
« Reply #2 on: February 17, 2013, 05:16:51 PM »

You need to set these states manually. The code below demonstrate how to set the data states when loading data.
Code:
$('#tg').treegrid({
loadFilter: function(data){
var opts = $(this).treegrid('options');
var originalData = $(this).treegrid('getData');
if (originalData){
setState(data);
}
return data;

function setState(data){
for(var i=0; i<data.length; i++){
var node = data[i];
var originalNode = findNode(node[opts.idField], originalData);
if (originalNode){
node.state =originalNode.state;
}
if (node.children){
setState(node.children);
}
}
}

function findNode(id, data){
var cc = [data];
while(cc.length){
var c = cc.shift();
for(var i=0; i<c.length; i++){
var node = c[i];
if (node[opts.idField] == id){
return node;
} else if (node['children']){
cc.push(node['children']);
}
}
}
return null;
}
}
});

Thank you very much! It works
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!