我只知道静态写树的根节点,如:
root: {
id: 1,
text: '根节点',
type:-1,
allowDrag: false,
expanded: true,
}
请问要动态的生成应该要怎么做啊,怎么将后台的值传过来?我是用的spring+heibernate
root: {
id: 1,
text: '根节点',
type:-1,
allowDrag: false,
expanded: true,
}
请问要动态的生成应该要怎么做啊,怎么将后台的值传过来?我是用的spring+heibernate
var treeStore = Ext.create('Ext.data.TreeStore',{
proxy: {
type: 'ajax',
url: 'bindTree.action'
},
reader:{
type:'json'
},
root: {
text: 'Ext JS',
id: 'src',
expanded: true
}
});
//***************************左侧目录树*********************
var tree = Ext.create('Ext.tree.Panel',{
store:treeStore,
rootVisible:false,
height:'100%',
viewConfig:{
plugins:{
ptype:'treeviewdragdrop'
}
},
dockedItems:[{
xtype:'toolbar',
items:[{
text:'展开',
handler:function(){
tree.expandAll();
}
},{
text:'折叠',
handler:function(){
tree.collapseAll();
}
}]
}]
})
后台用json格式。
public class TreeNode {
private String id; private String href; private String text; private TreeNode parent; private List<TreeNode> children = new ArrayList<TreeNode>(); public TreeNode() { } public TreeNode(String id, String text) {
this.id = id;
this.text = text;
} public TreeNode(String id, String text, String href) {
this.id = id;
this.text = text;
this.href = href;
} /**
* @return the href
*/
public String getHref() {
return href;
} /**
* @param href
* the href to set
*/
public void setHref(String href) {
this.href = href;
} /**
* @return the id
*/
public String getId() {
return id;
} /**
* @param id
* the id to set
*/
public void setId(String id) {
this.id = id;
} /**
* @return the parent
*/
public TreeNode getParent() {
return parent;
} /**
* @param parent
* the parent to set
*/
public void setParent(TreeNode parent) {
this.parent = parent;
} /**
* @return the text
*/
public String getText() {
return text;
} /**
* @param text
* the text to set
*/
public void setText(String text) {
this.text = text;
} public void addChild(TreeNode node) {
children.add(node);
} public boolean isLeaf() {
return children.size() == 0;
} public Iterator<TreeNode> iterator() {
return children.iterator();
} public static String getTree(TreeNode node) {
StringBuffer tree = new StringBuffer();
int index = 0; if(node.isLeaf()) {
tree.append("{");
tree.append("id: '" + node.getId());
tree.append("', text: '"
+ (node.getText() == null ? "" : node.getText()));
tree.append("', href: '"
+ (node.getHref() == null ? "" : node.getHref()));
tree.append("', leaf: " + node.isLeaf());
tree.append("}");
}
else {
Iterator<TreeNode> it = node.iterator(); tree.append("{");
tree.append("id: '" + node.getId());
tree.append("', text: '" + node.getText());
tree.append("', leaf: " + node.isLeaf());
tree.append(", children: ["); while(it.hasNext()) {
if(index > 0) {
tree.append(", ");
} TreeNode child = it.next();
tree.append(getTree(child));
index++;
} tree.append("]");
tree.append("}");
} return tree.toString();
}
var root = new Ext.tree.TreeNode({
id: "root",
text: "root"
});
//rsObj json string
createTree(root, rsObj);
/**
* The method is used to create tree in page.
*
* @param parentNode parent node.
* @param nodes child nodes.
*/
function createTree(parentNode, nodes) {
for(var i = 0; nodes.length && i < nodes.length; i++) {
var child = new Ext.tree.TreeNode({
id: nodes[i].id,
text: nodes[i].text,
leaf: nodes[i].leaf,
href: nodes[i].href,
singleClickExpand: true,
listeners: {
"click" : function() {
if(this.leaf) {
}
}
}
}); if("root" == nodes[i].id) {
child = parentNode;
}
else {
parentNode.appendChild(child);
} if(!nodes[i].leaf) {
createTree(child, nodes[i].children);
}
}
}