接触EXT差不多两个礼拜了吧,今天终于把动态树形菜单搞定了。
----------------jsp--------------
<html>
<head>
<title></title>
<link rel="stylesheet" href="dtree.css" type="text/css"></link>
<script type="text/javascript" src="dtree.js"></script>
<body>
<form name="formTree" id="formTree" method="post">
<div id="treeDiv">
</div>
</form>
</body>
<script type="text/javascript">
function createTree(id,text) {
var Tree = Ext.tree;
var loader = new Tree.TreeLoader();
var tree = new Tree.TreePanel({
renderTo : 'treeDiv', //目标div容器
autoScroll : true,
animate : true,
containerScroll : true,
height: 300,
rootVisible: true,
width: 300,
loader : loader,
root: new Ext.tree.AsyncTreeNode({
id: id,
text: text,
draggable: false,
icon : 'sys/file/img/base.gif'
})
});
tree.on('beforeload', function (node) {
tree.loader.dataUrl = "file_FlTree_getByParentId.action?parentId=" + node.id;
});
tree.on('click',function (node,event){
// tree.loader();
// alert(node.isLeaf());
if(node.isLeaf()){
event.stopEvent();
if(Ext.getCmp(node.attributes.id)!=null){
//Ext.getCmp(node.attributes.id+'DIV').show();
return ;
}
}else{
// tree.loader.dataUrl = "file_FlTree_getByParentId.action?parentId=" + node.id;
event.stopEvent();
}
}); }
Ext.onReady(function(){
Ext.Ajax.request({
url:'file_FlTree_getByParentId.action?parentId=0' ,
//method:'POST',
//params:{orders:orders},
success : function(resp, opts){
var respText = Ext.util.JSON.decode(resp.responseText);
//alert(resp.responseText);
//result=respText.msg;
//alert(respText.length);
//alert(respText[0].text);
//if (respText.success) {
for( var i=0;i<respText.length;i++){
createTree(respText[i].id,respText[i].text);
}
//}else {alertErrorMsg(respText);}
},
failure : function(){}
});
});
</script>
</html>
----------------action--------------
public String getByParentId() {
List<FileInfo> lst = new ArrayList<FileInfo>();
lst = flTreeService.getByParentId(parentId);
int i = 0;
StringBuffer jsonMode = new StringBuffer();
if (lst.size() > 0) {
jsonMode.append("[");
for (FileInfo fileInfo : lst) {
if (i == 0) {
i++;
} else {
jsonMode.append(",");
}
jsonMode.append("{text : '");
jsonMode.append(fileInfo.getNewName());
jsonMode.append("',id : '");
jsonMode.append(fileInfo.getId());
jsonMode.append("',cls : 'folder'}");
//this.findChlid(lst, fileInfo.getId(), jsonMode);
}
jsonMode.append("]");
}