主要使用他做帶有復選框的樹,一次性從數據庫得到數據,產生js代碼,送到瀏覽器執行。復選框可以直接寫到標題里面,注意復選框的id命名規則,合理的命名可以處理一些操作(比如,取消上級,則取消所有下級)。最后就是對一次讀取數據庫可以采用路徑發和封閉法一次性讀取樹的所有數據,避免遞歸方式。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
??????? "<html>
<head>
<title>Dojo Tree Widget Test (dynamic node creation)</title>
<script type="text/javascript">
?var djConfig = {isDebug: true, debugAtAllCosts: true };
</script>
<script type="text/javascript" src="../../../dojo.js"></script>
<script type="text/javascript">
?dojo.require("dojo.widget.*");
?dojo.require("dojo.widget.TreeV3");
?dojo.require("dojo.widget.TreeNodeV3");
?dojo.require("dojo.widget.TreeBasicControllerV3");
?dojo.hostenv.writeIncludes();
</script>
<script type="text/javascript">
?dojo.addOnLoad(function(){
??var controller = dojo.widget.createWidget("TreeBasicControllerV3");??
??var tree = dojo.widget.createWidget("TreeV3", {listeners:[controller.widgetId]});
??
??document.body.appendChild(tree.domNode);
??var rootNode = dojo.widget.createWidget("TreeNodeV3", {title: "<input type='checkbox' class='TreeIcon' />Root Node", tree: tree.widgetId});
??
??tree.addChild(rootNode);
??var node1 = dojo.widget.createWidget("TreeNodeV3", {title: "Node 1", tree: tree.widgetId});
??rootNode.addChild(node1);
??var node2 = dojo.widget.createWidget("TreeNodeV3", {title: "Node 1.2", tree: tree.widgetId});
??node1.addChild(node2, null, "after");
??rootNode.addChild(dojo.widget.createWidget("TreeNodeV3", {title: "Node 2", tree: tree.widgetId}));
??var node3 = dojo.widget.createWidget("TreeNodeV3", {title: "Node 3<br>multiline", tree: tree.widgetId});
??rootNode.addChild(node3);
??var node3_1 = dojo.widget.createWidget("TreeNodeV3", {title: "Node 3.1", tree: tree.widgetId});
??node3.addChild(node3_1);
??node3_1.addChild(dojo.widget.createWidget("TreeNodeV3", {title: "Node 3.1.1", tree: tree.widgetId}))
??// Add some nodes the first element (rather than the last element) just for testing
??for(var i=1;i<5;i++) {
???node1.addChild(dojo.widget.createWidget("TreeNodeV3", {title: "Node 1."+i, tree: tree.widgetId}));
??}
??tree.addChild(dojo.widget.createWidget("TreeNodeV3", {title: "Root Node 2", tree: tree.widgetId}));
?});
</script>
</head>
<body>
<h4>Create tree programmatically</h4>
</body>
</html>