您的位置:首页 > Web前端 > JQuery

JFinal 实现jQuery EasyUI ComboTree数据加载并收起菜单节点

2015-09-02 16:56 756 查看
最终实现的效果:



第一步:jsp页面中添加下拉框

<select id="cc" class="easyui-combotree" name="cc" style="width:200px;"></select>


第二步:用js加载combotree,用js加载更加方便

$(function () {
$('#cc').combotree({
url: 'combotreeData',
valueField: 'id',
textField: 'text',
editable: false,
onLoadSuccess: function (node, data) {
$("#cc").combotree('tree').tree("collapseAll");
}
});

});


注释:$(“#cc”).combotree(‘tree’).tree(“collapseAll”); 此语句可以收起节点

第三步:在JFinal的Controller中添加url对应的方法

@PermissionOwn(name = "combotree获取数据")
public void combotreeData() {
List<Record> records = Db.find(
"select id,parent_id,title text from 【table_name】");

//getRecordTree()为组成combotree的函数
List<Record> result = Util.getRecordTree(records);

//renderJson方法为转换成JSON对象并返回
renderJson(result);
}


注释:写SQL的时候,最好只查询id和text,并取为别名,这样方便构成树

第四步:写构成ComboTree的函数getRecordTree

/**
* 获取树结构
* @param records
* @return
*/
public static List<Record> getRecordTree(List<Record> records) {
List<Record> result = new ArrayList<Record>();
Map<Integer, Record> map = new HashMap<Integer, Record>();
for (Record record : records) {
map.put(record.getLong("id").intValue(), record);
}
for (Record record : records) {
if (record.getInt("parent_id") == 0) {
result.add(record);
} else {
Record parentRecord = map.get(record.getInt("parent_id"));
if (parentRecord == null) {
continue;
}
List<Record> list = parentRecord.get("children");
list = list == null ? new ArrayList<Record>() : list;
list.add(record);
parentRecord.set("children", list);
}
}
return result;
}


注释:请根据自己的需求改写本函数

附加:ComboTree一般常用方法

加载:$('#cc').combotree('reload');
赋值:$('#cc').combotree('setValue', 2);
获取数据:var val = $('#cc').combotree('getValue');
设置不可用:$('#cc').combotree('disable');
设置可用:$('#cc').combotree('enable');

测试Json数据
var jsonData = [{
"id":1,
"text":"My Documents",
"children":[{
"id":11,
"text":"Photos",
"state":"closed",
"children":[{
"id":111,
"text":"Friend"
},{
"id":112,
"text":"Wife"
},{
"id":113,
"text":"Company"
}]
},{
"id":12,
"text":"Program Files",
"children":[{
"id":121,
"text":"Intel"
},{
"id":123,
"text":"Microsoft Office"
},{
"id":124,
"text":"Games",
"checked":true
}]
},{
"id":13,
"text":"index.html"
}]
}];


以上就是实现方法,分享结束~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息