接上篇。
经过四个小时的努力,终于把cbtree基本搞定。雏形也基本完成,这里把代码贴出来。
代码贴出来之前还是先来个图吧。
cbtree的基本使用:
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'treeTest.jsp' starting page</title>
<link rel="stylesheet" type="text/css" href="js/dijit/themes/claro/claro.css">
<!-- cbtree需要的css文件 -->
<link rel="stylesheet" type="text/css" href="js/cbtree/themes/claro/claro.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body class="claro">
<button type="button" id="treeBtn" data-dojo-type="dijit/form/Button">tree测试</button>
<div id="CheckboxTree"></div>
<form data-dojo-type="dijit/form/Form">
<div data-dojo-type="dijit/Dialog" class="selectDia" id="selectDia" title="终端划分">
<table>
<tr>
<td>
<fieldset>
<legend>未选中</legend>
<div class="leftTree" id="leftTree">
<div id="CheckboxTree1"></div>
</div>
</fieldset>
</td>
<td>
<button class="toRightBtn" id="toRightBtn" type="button" data-dojo-type="dijit/form/Button">--></button>
<br/>
<br/>
<button class="toLeftBtn" id="toLeftBtn"type="button" data-dojo-type="dijit/form/Button"><--</button>
</td>
<td>
<fieldset>
<legend>已选中</legend>
<div class="rightTree" id="rightTree">
<div id="CheckboxTree2"></div>
</div>
</fieldset>
</td>
</tr>
</table>
<div class="actionBar">
<button type="submit" data-dojo-type="dijit/form/Button">确定
</button>
<button type="button" id="cancelBtn" data-dojo-type="dijit/form/Button">取消</button>
</div>
</div>
</form>
<script type="text/javascript" src="js/dojo/dojo.js" data-dojo-config="parseOnLoad:true"></script>
<script type="text/javascript">
require([
"dijit/registry",
"dojo/ready",
"dojo/store/Memory", // basic dojo/store
"cbtree/Tree", // Checkbox tree
"cbtree/model/TreeStoreModel"
], function(registry, ready, Memory, Tree, ObjectStoreModel){
ready(function(){
var data = [
{ id: "earth", name:"The earth", type:"planet", population: "6 billion"},
{ id: "AF", name:"Africa", type:"continent", population:"900 million", area: "30,221,532 sq km",
timezone: "-1 UTC to +4 UTC", parent: "earth"},
{ id: "EG", name:"Egypt", type:"country", parent: "AF" },
{ id: "KE", name:"Kenya", type:"country", parent: "AF" },
{ id: "Nairobi", name:"Nairobi", type:"city", parent: "KE" },
{ id: "Mombasa", name:"Mombasa", type:"city", parent: "KE" },
{ id: "SD", name:"Sudan", type:"country", parent: "AF" },
{ id: "Khartoum", name:"Khartoum", type:"city", parent: "SD" },
{ id: "AS", name:"Asia", type:"continent", parent: "earth" },
{ id: "CN", name:"China", type:"country", parent: "AS" },
{ id: "IN", name:"India", type:"country", parent: "AS" },
{ id: "RU", name:"Russia", type:"country", parent: "AS" },
{ id: "MN", name:"Mongolia", type:"country", parent: "AS" },
{ id: "OC", name:"Oceania", type:"continent", population:"21 million", parent: "earth"},
{ id: "AU", name:"Australia", type:"country", population:"21 million", parent: "OC"},
{ id: "EU", name:"Europe", type:"continent", parent: "earth" },
{ id: "DE", name:"Germany", type:"country", parent: "EU" },
{ id: "FR", name:"France", type:"country", parent: "EU" },
{ id: "ES", name:"Spain", type:"country", parent: "EU" },
{ id: "IT", name:"Italy", type:"country", parent: "EU" },
{ id: "NA", name:"North America", type:"continent", parent: "earth" },
{ id: "MX", name:"Mexico", type:"country", population:"108 million", area:"1,972,550 sq km",
parent: "NA" },
{ id: "Mexico City", name:"Mexico City", type:"city", population:"19 million", timezone:"-6 UTC", parent: "MX"},
{ id: "Guadalajara", name:"Guadalajara", type:"city", population:"4 million", timezone:"-6 UTC", parent: "MX" },
{ id: "CA", name:"Canada", type:"country", population:"33 million", area:"9,984,670 sq km", parent: "NA" },
{ id: "Ottawa", name:"Ottawa", type:"city", population:"0.9 million", timezone:"-5 UTC", parent: "CA"},
{ id: "Toronto", name:"Toronto", type:"city", population:"2.5 million", timezone:"-5 UTC", parent: "CA" },
{ id: "US", name:"United States of America", type:"country", parent: "NA" },
{ id: "SA", name:"South America", type:"continent", parent: "earth" },
{ id: "BR", name:"Brazil", type:"country", population:"186 million", parent: "SA" },
{ id: "AR", name:"Argentina", type:"country", population:"40 million", parent: "SA" }
];
var store = new Memory( { data: data });
var model = new ObjectStoreModel( { store: store,
query: {id: "earth"},
rootLabel: "The Earth",
checkedRoot: true
});
var tree = new Tree( { model: model, id:"tree00" }, "CheckboxTree" );
var tree1 = new Tree( { model: model, id:"tree01", style:{width:'230px', height:'350px'} }, "CheckboxTree1" );
var tree2 = new Tree( { model: model, id:"tree02", style:{width:'230px', height:'350px'} }, "CheckboxTree2" );
//tree.startup();
tree1.startup();
tree2.startup();
registry.byId("treeBtn").on("click", function(){
registry.byId("selectDia").show();
});
});
});
</script>
</body>
</html>
关键点:上图中的css一定要注意,cbtree需要引用它自带的css<link rel="stylesheet" type="text/css" href="js/cbtree/themes/claro/claro.css">,不引用的话可能checkbox不会显示,这是我的经验,浪费我快三个小时。