jorgchart java_jOrgChart 后端取数--递归构建map

jOrgChart - A jQuery OrgChart Plugin

jQuery(document).ready(function () {

loadtree();

});

//menu_list为json数据

//parent为要组合成html的容器

function showall(menu_list, parent) {

for (var menu in menu_list) {

//如果有子节点,则遍历该子节点

if (menu_list[menu].children.length > 0) {

//创建一个子节点li

var li = $("

");

//将li的文本设置好,并马上添加一个空白的ul子节点,并且将这个li添加到父亲节点中

$(li).append(" " + menu_list[menu].name + "").append("

//将空白的ul作为下一个递归遍历的父亲节点传入

showall(menu_list[menu].children, $(li).children().eq(1));

}else {

//如果该节点没有子节点,则直接将该节点li以及文本创建好直接添加到父亲节点中

$("

").append(" " + menu_list[menu].name + "").appendTo(parent);

}

}

}

function loadtree() {

$.ajax({

url: '/batchIssueManage.do?method=jsonJorg',

type : "post",

error: function () { alert('Error loading PHP document'); },

dataType : 'json',

success: function (result) {

// var json = eval("["+result+"]");//这里中间的括号为中括号 使数据类似[{"username":"张三","content":"沙发"}];的格式

var showlist = $("

showall(result, showlist);

//将生成好的固定格式的ul

$("#f").append(showlist);

$("#org").jOrgChart();

}

});

}

function loadtree111() {

var res = [{

"id": 1,

"name": "根节点",

"children": [

{

"id": 2,

"name": "第二层1",

"data": "",

"children": ""

},

{

"id": 3,

"name": "第二层2",

"data": "",

"children": ""

}

]

}];

//var json = eval("("+res+")");

var showlist = $("

showall(res, showlist);

//将生成好的固定格式的ul

$("#f").append(showlist);

$("#org").jOrgChart();

/*  $("#org").jOrgChart({

chartElement : "#chart",

dragAndDrop  : false

}); */

}

function defineFunc(id){

alert(id+",ddd");

}

action方法:

public ActionForward jsonJorg(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

//组织树的顶层节点信息

Map m = new HashMap();

m.put("id", "9903");

m.put("name", "业务单元");

m.put("data", "");

Map tree = getCurr(m);

JSONArray jsonAry = JSONArray.fromObject(m);

String jsonStr = jsonAry.toString();

response.setContentType("text/plain;charset=UTF-8");

//如果这里不输出json信息,前端form提交回调的success方法就不会执行

try {

response.getWriter().write(jsonStr);

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

//得到当前节点的子节点内容

public Map getCurr(Map m){

String currId = (String)m.get("id");

List childMap = new ArrayList();

List childList = BatchIssueManageDAO.getChildren(currId);

//有孩子节点,本身非叶子节点

if(childList!=null && childList.size()>0){

//Java的内部集合数据的处理机制,比单纯的for循环速度快,内容消耗还不是随机的,不会造成内存碎片

Iterator it = childList.iterator();

while(it.hasNext()){

Map mi = (Map)it.next();

mi.put("id", mi.get("ID"));

mi.put("name", mi.get("NAME"));

childMap.add(mi);

m.put("children", childMap);

getCurr(mi);//递归查找子节点的下级信息

}

}else{

m.put("children", "");

}

return null;

}

后端的DAO简单,就是一个select,此处不再详述!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值