id name content parentid
1001 电气 aaa 0
1002 土建 bbb 0
1003 电气一级节点 ccc 1001
1004 电气一级节点二 ddd 1001
1005 电气二级节点 eee 1003
1006 电气二级节点二 fff 1003
1007 土建一级节点 ggg 1002
需要在页面上以列表的形式显示:
电气 aaa
电气一级节点 bbb
电气二级节点 eee
电气二级节点二 fff
电气一级节点二 ccc
土建 bbb
土建一级节点 ggg
有那个兄弟帮忙解决下,先谢过!
[code="java"]
function getTree(parentid,blackSpace){
//使用同步Ajax方式请求菜单数据
var conn = Ext.lib.Ajax.getConnectionObject().conn;
conn.open("POST", 'logindata.jsp?parentid='+parentid+'&date='+new Date().getTime(), false); //使用同步方式时设置第三个参数为false
conn.send(null);
var contentTable = document.getElementById("contentTable");
if (conn.status == "200"){
var json = Ext.util.JSON.decode(conn.responseText);
if (json.length == 0){
return;
}
for (var i=0; i<json.length; i++){
var tr = contentTable.insertRow();
var nameTd = tr.insertCell();
var contentTd = tr.insertCell();
nameTd.innerHTML = blackSpace+json[i].name;
contentTd.innerHTML = blackSpace+json[i].content;
getTree(json[i].id,blackSpace+" ");
}
}else{
showExtAlert("消息提示", "获取菜单失败,请检测网络是否畅通", Ext.MessageBox.WARNING);
}
}
你将查询结果以一个list返回,然后在客户端用js来解析它。
先写一下如下的列表结构
这个把它搞成js数组:逗号自己补满。。。
var a = [
[1001 ,电气 ,aaa ,0 ]
[1002 ,土建 ,bbb ,0 ]
[1003 ,电气一级节点 ,ccc ,1001 ]
[1004 ,电气一级节点二 ,ddd ,1001 ]
[1005 电气二级节点 eee 1003 ]
[1006 电气二级节点二 fff 1003 ]
[1007 土建一级节点 ggg 1002]
];
然后写一个js,for循环
for(a){
a[i][4]==0,
添加到0级,然后那个li加上一个class比如说 li class="m1001"
a[i][4]!=0,添加,添加到
m+a[i][4]这个li的ul下面。也给自己加上一个class="m1003"
添加完之后将a[i]从数组里面pop扔掉。
这样循环添加直到整个数组为空
你再用jquery的treeview,可以直接把整个ul li转换成可以伸缩展开的树。
在补充一下,如用这样的方式的话,你的ajax请求方式要改为同步请求,不能使用异步请求
哥们,我做了一个例子,就是你这种方式的,用的是DTREE,我把地址发给你,你看看,我做的例子是AJAX做的树形目录管理,表设计和你这个是一样的
http://leonelwong.iteye.com/admin/blogs/323073
采用js tree 看看,