您的位置:首页 > Web前端

用递归方式实现带层级表数据的无线级联树形显示,并转换成JsonArray返回前端

2016-06-02 17:43 856 查看
private int iLength=0;
/**
* 用递归方式实现无限级联
* @return
*
*   |第一层
*   |—第二层
*   |—|—第三层
*/
public JSONArray getAll() {
LinkedHashMap<String, String> mapDepart = new LinkedHashMap<String, String>();
LinkedHashMap<String, String> departList = getNode("0010aae53b864f7ca440811a37716cc6",mapDepart);

//将linkedHashMap转化为json对象
JSONArray jsonArray = new JSONArray();
for (String key : departList.keySet()) {
JSONObject json = new JSONObject();
json.put("ids", key);
json.put("departName", departList.get(key));
jsonArray.add(json);
}
//返回jsonarray
return jsonArray;
}
//按照层数生成"|—"
private String genHeng(int iLength){
String sHeng = "";
for (int i = 0; i < iLength; i++) {
sHeng+="|—";
}
return sHeng;
}
//利用递归生成无限级联的树形结构
private LinkedHashMap<String, String> getNode(String parentIds,LinkedHashMap<String, String> mapDepart){
Depart depart = Depart.dao.findById(parentIds);
mapDepart.put(depart.getIds(), genHeng(iLength)+depart.getDepartName());
List<Record> listDepart = Db.find("Select * from depart where pDepartIds=?",parentIds);
//有父节点为parentIds的子节点
for (Record record : listDepart) {
iLength++;
mapDepart.put(record.getStr(Depart.column_ids), genHeng(iLength)+record.getStr(Depart.column_departName));
getNode(record.getStr(Depart.column_ids), mapDepart);
iLength--;
}
return mapDepart;

}

数据表depart结构是 ids,departName,pDepartIds
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: