extjs 加上dwr tree

本文介绍如何使用ExtJS构建树形组件,并通过DWR技术与Java后端交互,实现动态加载组织结构数据。文章详细展示了所需JavaScript代码及JavaBean的设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里是js类 创建一个树。。

从java 类中 直接返回一个 bean 的集合(List ,Set)都行。。。

Ext.BLANK_IMAGE_URL='js/resources/images/vista/s.gif';

Ext.onReady(
function()...{
vari=20;
//从DWR中加载数据自动转换成json格式
vartreeLoader=newExt.tree.DWRTreeLoader(...{


dwrCall:CheckBean.getTreeNode
//调用java方法
}
);

//定义树
varTree=Ext.tree;

vartree=newTree.TreePanel(...{

el:
'tree-div',//目标div容器



animate:
true,

enableDD:
true,

containerScroll:
true,

loader:treeLoader

}
);


//树中加入一个右键菜单事件
tree.on('contextmenu',onContextMenu);

functiononContextMenu(node,e)...{
varmenu;
if(!menu)...{
menu
=newExt.menu.Menu([...{

id:node.id
+'add',
text:
'添加一个文件',
handler:
function()...{

node.appendChild(
newTree.AsyncTreeNode(...{

text:node.childNodes.length.toString(),
id:i
+++'',
expanded:
true
}
));

}

}
,...{

id:node.id
+'del',
text:
'删除接点',
handler:
function()...{
if(node.id!=-1)...{
node.remove();
}
else...{

Ext.Msg.alert(
'错误','根结点不能删除');
}

}

}
]);

}


menu.showAt(e.getPoint());
node.on(
'append',onAppend);

functiononAppend(tree,thisNode,newNode,index)...{

alert();


}



}


//定义根节点
varroot=newExt.tree.AsyncTreeNode(...{

text:
'组织机构图',

draggable:
false,

id:
'-1'//默认的node值:?node=-1

}
);

tree.setRootNode(root);

tree.render();

root.expand();

}
);

bean 的命名 必须 遵守规范

所有字段 必须遵守命名规范

如何不想使用这样的命名 就要修改 Ext.tree.DWRTreeloader.js这个类

packagecom;

importjava.util.List;

publicclassOrgBean...{


//是否加载字节点下的所有节点
privatebooleanchildrenLoaded=false;
//是否用子节点
privatebooleanhasChildren=true;
//是否加载时候展开
privatebooleanexpanded=false;
//tree的id属性
privateStringid;
//tree的name属性
privateStringtext;
//当前类的集合
privateList<OrgBean>children;



publicList<OrgBean>getChildren()...{
returnchildren;
}


publicvoidsetChildren(List<OrgBean>children)...{
this.children=children;
}


publicStringgetId()...{
returnid;
}


publicvoidsetId(Stringid)...{
this.id=id;
}


publicStringgetText()...{
returntext;
}


publicvoidsetText(Stringtext)...{
this.text=text;
}






publicbooleanisChildrenLoaded()...{
returnchildrenLoaded;
}


publicvoidsetChildrenLoaded(booleanchildrenLoaded)...{
this.childrenLoaded=childrenLoaded;
}


publicbooleanisExpanded()...{
returnexpanded;
}


publicvoidsetExpanded(booleanexpanded)...{
this.expanded=expanded;
}


publicbooleanisHasChildren()...{
returnhasChildren;
}


publicvoidsetHasChildren(booleanhasChildren)...{
this.hasChildren=hasChildren;
}




}

OrgDwr.java

没什么好说的 一个 递归 加载数据

packagecom;

importjava.util.List;

publicclassOrgDwr...{

privateOrgDAOorgDAO=newOrgDAO();

publicList<OrgBean>getTreeNode(StringtreeId)...{
System.out.println(treeId);
List
<OrgBean>list=orgDAO.findByParentID(Integer.parseInt(treeId));



returnget(list);
}


privateList<OrgBean>get(List<OrgBean>list)...{

for(OrgBeanbean:list)...{
System.out.println(bean.getText());
List
<OrgBean>list2=orgDAO.findByParentID(Integer.parseInt(bean.getId()));


if(list2.size()>0)...{
bean.setChildren(list2);
get(list2);
break;
}


bean.setHasChildren(
false);

}


returnlist;
}


}

html 如何 引用 超级简单 把几个 js 加载进去就ok了

<%...@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%...
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">

<title>MyJSP'org.jsp'startingpage</title>


<linkrel="stylesheet"type="text/css"
href
="js/resources/css/ext-all.css"/>
<scripttype="text/javascript"src="js/ext-base.js"></script>
<scripttype="text/javascript"src="js/ext-all.js"></script>
<scripttype="text/javascript"src="js/MyAsynTreeNode.js"></script>
<scripttype="text/javascript"src="js/DWRTreeLoder.js"></script>
<scripttype='text/javascript'
src='/ExtTree/dwr/interface/CheckBean.js'></script>
<scripttype='text/javascript'src='/ExtTree/dwr/engine.js'></script>

<scripttype='text/javascript'src='/ExtTree/dwr/util.js'></script>

<scripttype="text/javascript"src="js/extdwr.js"></script>
</head>

<body>
<!--树加载的位置-->
<divid="tree-div"
style
="overflow:auto;height:300px;width:200px;border:2pxsolid#c3daf9;"></div>

</body>
</html>

用需要 源码的话 把邮箱留下来 我给你们传过去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值