1、TreeJson
package com.hyxt.data.box.util;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
/**
* easui中的tree_data.json数据,只能有一个root节点
* [{
* "id":1,
* "text":"Folder1",
* "iconCls":"icon-save",
* "children":[{
* "text":"File1",
* "checked":true
* }]
* }]
* 提供静态方法formatTree(List<TreeJson> list) 返回结果
* TreeJson.formatTree(treeJsonlist) ;
*
* @author huw
*/
public class TreeJson implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;
private String pid;
private String text;
private String iconCls;
private String state;
private String checked;
private JSONObject attributes = new JSONObject();
private List<TreeJson> children = new ArrayList<TreeJson>();
/**
* ***** setter and getter *********
*/
public static List<TreeJson> formatTree(List<TreeJson> list) {
TreeJson root = new TreeJson();
TreeJson node = new TreeJson();
List<TreeJson> treelist = new ArrayList<TreeJson>();// 拼凑好的json格式的数据
List<TreeJson> parentnodes = new ArrayList<TreeJson>();// parentnodes存放所有的父节点
int k=0;
//for (int k = 0; k < parentList.size(); k++) {
if (list != null && list.size() > 0) {
root = list.get(0);
//循环遍历oracle树查询的所有节点
for (int i = 1; i < list.size(); i++) {
node = list.get(i);
if (node.getPid().equals(root.getId())) {
//为tree root 增加子节点
parentnodes.add(node);
// node.setChecked("true");
root.getChildren().add(node);
} else {//获取root子节点的孩子节点
//node.setChecked("true");
getChildrenNodes(parentnodes, node);
parentnodes.add(node);
}
}
treelist.add(root);
}
// }
return treelist;
}
private static void getChildrenNodes(List<TreeJson> parentnodes, TreeJson node) {
//循环遍历所有父节点和node进行匹配,确定父子关系
for (int i = parentnodes.size() - 1; i >= 0; i--) {
TreeJson pnode = parentnodes.get(i);
//如果是父子关系,为父节点增加子节点,退出for循环
if (pnode.getId().equals(node.getPid())) {
//pnode.setState("closed");//关闭二级树
pnode.getChildren().add(node);
return;
} else {
//如果不是父子关系,删除父节点栈里当前的节点,
//继续此次循环,直到确定父子关系或不存在退出for循环
parentnodes.remove(i);
}
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getIconCls() {
return iconCls;
}
public void setIconCls(String iconCls) {
this.iconCls = iconCls;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getChecked() {
return checked;
}
public void setChecked(String checked) {
this.checked = checked;
}
public List<TreeJson> getChildren() {
return children;
}
public void setChildren(List<TreeJson> children) {
this.children = children;
}
}
2、用户页面
<script type="text/javascript">
$(function(){
$('#treeul').tree({
checkbox:true,
url:'<%=request.getContextPath()%>/manage/role/roleresourcedata?roleId='+${roleId},
onLoadSuccess:function(){
//绑定权限
$.ajax({
cache:false,
dataType:'text',
success:function(data){
var array = data.split(',');
for(var i=0;i<array.length;i++)
{
var node = $('#treeul').tree('find',array[i]);
$('#treeul').tree('check',node.target);
}
}
})
}
});
});
function getChecked(){
var nodes = $('#treeul').tree('getChecked');
var s = '';
for(var i=0; i<nodes.length; i++){
if (s != '') s += ',';
s += nodes[i].id;
}
$("#rightIds").val(s);
return true;
}
</script>
---------------------------
还可以这样写:
$(function(){
$('#treeul').tree({
checkbox:true,
url:'<%=request.getContextPath()%>/manage/role/roleresourcedata?roleId='+${roleId},
onLoadSuccess:function(){
//绑定权限
$.ajax({
url:'getId.aspx?id='+v,
cache:false,
dataType:'text',
success:function(data){
var array = data.split(',');
for(var i=0;i<array.length;i++)
{
var node = $('#treeul').tree('find',array[i]);
$('#treeul').tree('check',node.target);
}
}
})
}
});
});
<form id="resourceForm" name="resourceForm" action="<%=request.getContextPath()%>/manage/role/resourcesave">
<input type="hidden" id="roleId" name="roleId" value="${roleId}">
<input type="hidden" id="rightIds" name="rightIds" value="">
<div class="easyui-panel" style="padding:5px">
<ul id="treeul" style="height: 300px;" class="easyui-tree" <%--data-options="url:'<%=request.getContextPath()%>/manage/role/roleresourcedata?roleId='+${roleId},method:'get',animate:true,checkbox:true"--%>></ul>
</div>
3、后台JSON
@RequestMapping(value = "/roleresourcedata")
public
@ResponseBody
String roleresourcedata(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
String roleId=request.getParameter("roleId");
StringBuilder jsonString =new StringBuilder();
List<TreeJson> list = rightService.findAll(roleId);
List<TreeJson> treeJsonList = TreeJson.formatTree(list);
net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(treeJsonList);
logger.info(" = ============== " +jsonArray.toString());
return jsonArray.toString();
}
相关推荐
easyui tree 改进版 ,支持复选框选择
easyui tree 三帧界面,右面动态显示图片和批注信息
easyui tree使用方式,詳細解釋其中使用方式。
对easyui tree扁平化扩展,不用再为children嵌套结构烦恼,使用版本1.4.2
JqueryEasyUI Tree 动态加载,稍作修改就可以用了,希望对有需要的人有帮助
EasyUI Tree Combotree 的模糊所搜
主要封装了easyui的表格删除添加修改查询以及tree和table和地图点的结合
简单的easyui tree 例子 。。。
内含数据库 及存储过程 主要以easyUI+JQuery+Ajax 实现后台数据交互的tree 及DataGrid 希望能帮到你的学习!
easyui Tree系统管理 实现树状图
完整的jquery easyui tree 树形列表节点异步加载demo,比官方demo详细得多。是前后台交互的web应用。
jquery-easyui-tree学习 详情请看:http://blog.csdn.net/wild46cat/article/details/52763256
项目实现了权限登陆管理 项目以EasyUI为主 实现DataGrid 及tree 与后台交互 有HTML+JS+Ajax 也有ASP.net 的easyUI控件
扩展jQuery EasyUI tree搜索树节点的方法,使其支持节点名称的模糊匹配,将不匹配的节点隐藏。 /** * 1)扩展jquery easyui tree的节点检索方法。使用方法如下: * $("#treeId").tree("search", searchText); * ...
easyui tree 例子
主要介绍了EasyUI Tree树组件无限循环的解决方法,需要的朋友可以参考下
//这里使用的easyui1.3.6 //解决的问题是Tree控件的checkbox不能设置为不允许用户勾选 //设置一个标志位,在整棵树加载完成后就将标志位设置为false,不允许勾选checkbox了,在加载数据完成之前是可以勾选的,用来在...
主要介绍了Easyui Tree获取当前选择节点的所有顶级父节点,以及easyUI Tree显示选中节点的所有父节点的实现代码,需要的朋友可以参考下
easyUI tree增删改操作以及easyUI window分类的