bootstrap-treeview 的使用

首先,看看效果

 简要介绍:bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等等。(百度的)

使用方法

首先要在页面中引入依赖文件和 bootstrap-treeview.js文件。

<link href="./css/bootstrap.css" rel="stylesheet">

<script src="./js/jquery.js">script>

<script src="./js/bootstrap-treeview.js">script

资源路径https://download.csdn.net/download/qq_25221835/10885922

 

高手话不多,直接贴代码,一个小事例、

首先看效果:以下有两层节点,其中“主题库名称”为父节点

首先看前台代码

$.getJSON("${ctx}/dvs/rule/bootstrapTreeData",function(data){
		$('#jstree').treeview({
			data: data,
			levels: 5,
			onNodeSelected: function(event, treeNode) {
				console.log(treeNode)
				if(treeNode.level == 1){// level=1 代表父类
					$("#themeName").val(treeNode.themeName);
				}else{
					$("#themeName").val(treeNode.themeName);
				}	
				$('#ruleTable').bootstrapTable('refresh');
			},
		});
	});

api介绍:

data:后台返回的数据

levels:节点的级别

onNodeSelected:节点的绑定事件

treeNode:点击的那一个节点的数据

等下展示 data的数据格式,你们就知道了。

 controller代码:mapList是最终返回的数据,用法就是创一个map(父),并设置其id 键,name 键 是页面显示的效果,如果你要传值到后台,你可以建立其他的键值对,然后再创建一个 名字自取的map List,我取名 为 “arra”这个list中的所有 map的 parentId键 的值都设置成map(父)的 id 键的值 ,再将 此 “arra” 存入到 map(父)的children 键中,最后将map(父)添加到mapList中,返回最终的mapList即可。

 

        @ResponseBody
	@RequiresPermissions("user")
	@RequestMapping(value = "bootstrapTreeData")
	public List<Map<String, Object>> bootstrapTreeData(HttpServletResponse response) {

		List<Map<String, Object>> mapList = Lists.newArrayList();
		List<ThemeModelDto> themes = ruleService.selectAllTheme();
		Map<String, Object> map = Maps.newHashMap(); // 这是 父 map,里面的 children key 存储的是 它的子
		// lever = 1 是 父
		map.put("themeName", "");
		map.put("name", "主题库名称");
		map.put("level", 1);
		map.put("id", "0");
		List<Map<String, Object>> arra = Lists.newArrayList();
		for (ThemeModelDto theme : themes) {
			Map<String, Object> childMap = Maps.newHashMap();
			childMap.put("id", UUID.randomUUID());
			childMap.put("themeName", theme.getCode());
			childMap.put("name", theme.getName());
			childMap.put("parentId", map.get("id"));
			arra.add(childMap);
		}
		map.put("children", arra);
		mapList.add(map);
		return mapList;
	}

 回到之前,一起看看 data的数据格式:    alert(JSON.stringify(data))

[{
	"themeName": "",
	"level": 1,
	"children": [{
		"themeName": "EMR",
		"name": "电子病历",
		"id": "7a60abcf-8678-4ca4-9f21-8d11c7b1e052",
		"parentId": "0"
	}, {
		"themeName": "HEALTH_BASIC",
		"name": "基本医疗",
		"id": "b9619bad-63c6-4752-bb8e-126828814a8a",
		"parentId": "0"
	}, {
		"themeName": "EHR",
		"name": "健康档案",
		"id": "e9898a6b-1a14-450a-b3bc-67987da3a1f8",
		"parentId": "0"
	}, {
		"themeName": "PUB",
		"name": "公共资源",
		"id": "61bd4aae-cc16-45fe-be6f-e01414afa7ef",
		"parentId": "0"
	}],
	"name": "主题库名称",
	"id": "0"
}]

看到数据,大家就应该懂怎么用了吧。

以上是最简单的用法,可能大家会进行扩展:

比如:怎么设置初始化时,就选中某一个节点,亦或是 如果有多层节点怎么办

首先:我找了一下网上的api:

话不多说,直接贴代码:为了演示,我设置了一个 常量 i ,当循环第二次时,设置了一个state 键给childMap,值为 一个check

                int i=0;
		for (ThemeModelDto theme : themes) {
			Map<String, Object> childMap = Maps.newHashMap();
			childMap.put("id", UUID.randomUUID());
			childMap.put("themeName", theme.getCode());
			childMap.put("name", theme.getName());
			childMap.put("parentId", map.get("id"));
			arra.add(childMap);
			i++;
			if(i==2) {
				Map<String, Object> check = Maps.newHashMap();
				check.put("selected", true);//说明是修改执行计划
			    childMap.put("state",check);
			}
		}

data:仔细看和之前的不同

[{
	"themeName": "",
	"level": 1,
	"children": [{
		"themeName": "EMR",
		"name": "电子病历",
		"id": "dabf6eb4-a43a-4fcb-a2f0-598e93a4daf2",
		"parentId": "0"
	}, {
		"themeName": "HEALTH_BASIC",
		"name": "基本医疗",
		"id": "a201ef30-221f-4123-8ffd-88ddd0ef4afa",
		"state": {
			"selected": true
		},
		"parentId": "0"
	}, {
		"themeName": "EHR",
		"name": "健康档案",
		"id": "afd99930-2aa8-4879-9f21-7c29d43d47ed",
		"parentId": "0"
	}, {
		"themeName": "PUB",
		"name": "公共资源",
		"id": "1aecff0f-b67f-4e95-bde7-2f9ef70cb28a",
		"parentId": "0"
	}],
	"name": "主题库名称",
	"id": "0"
}]

效果:

 多层节点的要用到递归,大家自己可以去拓展

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一彡十

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值