Saturday, June 25, 2011

Updating/Refreshing a dojo Tree

A dojo tree can be reloaded or refreshed with the below code.

<html>
<head>
<link rel="stylesheet" type="text/css" href="dojo-release-1.6.0/dojo/resources/dojo.css" />
<link rel="stylesheet" type="text/css" href="dojo-release-1.6.0/dijit/themes/tundra/tundra.css" />
<script src="dojo-release-1.6.0/dojo/dojo.js" language="javascript"></script>
<script language="javascript" type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.form.Button");
dojo.require("dijit.Tree");
dojo.require("dijit.tree.ForestStoreModel");
dojo.require("dojo.data.ItemFileWriteStore");
var treeModel;
</script>
<script>
function reload(){
if(dijit.byId("treeOne")){
// Destroy the widget
dijit.byId("treeOne").destroyRecursive();
}
var store = new dojo.data.ItemFileWriteStore({
url: "./json/files.json"
});

treeModel = new dijit.tree.ForestStoreModel({
store: store,
query: {
"type": "Folder"
},
rootId: "server",
rootLabel: "ROOT",
childrenAttrs: ["children"],
});
document.getElementById("treespan").innerHTML="<div id='treeOne'></div>"
new dijit.Tree({
model: treeModel,
},
"treeOne");
}
</script>
</head>
<body class="tundra">
<button dojoType="dijit.form.Button" type="button" onClick="reload()" >Load Tree</button>
<span id="treespan"></span>
</body>
</html>



Back Track a dojo Tree

If we have a tree node of dojo tree we can back track the tree using the below code.

Once we get a tree node of the dojo tree(for Right click/click), we can find out the root node of the tree .
We get the values of the nodes from the datastore that was used to create the tree.


var tn =dijit.getEnclosingWidget(e.target);

while(parent.indent >0){
// get the value from the nodes from the data store
console.debug(store.getValue(parent.item, 'name'));
parent=parent.getParent();
}



About Me