我想用EXT做个树

dage619 2010-01-20 09:05:41
没用过EXT,最近刚学,只懂一点皮毛,想用它做个动态树,网上的例子都看不懂,谁帮我实现个比较简单的。
...全文
147 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangchangbing 2010-01-23
  • 打赏
  • 举报
回复
你先找个“死树”的代码,运行一下看看。
其实就是看看ext的树涉及到那些object,以及他们的用法。

然后找个“活树”,但是json还是一个写死的文件。读取json到页面展示,学习下“活树”的用法。

最后,自己写代码生成json就可以了。
Trinx 2010-01-23
  • 打赏
  • 举报
回复
看看这个是我在网上找的,写的很全面,连各种操作都有,我以前就参考过。
var treeRoot = new Ext.tree.AsyncTreeNode({
id:'root',
treeid : '1',
text : "根节点名称",
expanded : true,
expandable : true,
draggable : false
});
var treeLoader = new Ext.tree.TreeLoader({
url : '',
baseParams : {
parentId : '0'
},
listeners : {
beforeload : function(tree, node) {
var treeid = node.attributes.treeid;
if (treeid == '1') {
tree.url = '';
tree.baseParams.parentId = treeid;
} else {
tree.url = '';
tree.baseParams.parentId = treeid;
}
}
}
});
var treeMenu;
var treePanel = tree = new Ext.tree.TreePanel({
root : treeRoot,
loader : treeLoader,
width : 220,
height : 340,
autoScroll :true,
contextMenu : treeMenu,
listeners : {
click : function(node, e) {
if (node.isLeaf()) {
//当前节点是叶子节点时触发
}
},
//定义右键菜单
contextmenu : function(node, e) {
//当节点为根节点时
if (node.parentNode == null) {
node.select();//当前节点被选中
treeMenu = new Ext.menu.Menu({
items : [{
text : "添加二级菜单项",
iconCls : 'leaf',
handler : function() {
Ext.MessageBox.prompt('请输入二级菜单名称', "", function(e,
text) {
if (e == "ok") {
Ext.Ajax.request({
//添加二级菜单的URL
url : '',
params : {
czdw : text,
dwlb : node.attributes.treeid,
gdjdm: wp.gdjdm
},
method : 'post',
sync : true,
success : function(res) {
//请求返回成功后在前天添加相应节点
var jsonObj = eval("(" + res.responseText + ")");
var tempNode = new Ext.tree.TreeNode({
treeid : jsonObj.treeid,
text :jsonObj.text,
expandable : true,
draggable : false,
dw:true//节点自定义属性,可根据需要添加,主要为判断加载菜单项
});
//注册右键菜单
tempNode.on('contextmenu',function(node,e){
node.select();
treeMenu.showAt(e.getPoint());
});
node.appendChild(tempNode);
try{
tempNode.select();//定位到新节点
}catch(e){}
},
failure : function() {
Ext.Msg.alert('提示消息','操作失败!');
}
});
}
})
}
}
TzSword 2010-01-21
  • 打赏
  • 举报
回复
我有教材哦。。。。
要的说一下哦。。。
写树的话。。
你可以研究一下成熟的树
Dtree或Xtree等。。。你就可以写咯。。。。。
zl3450341 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dinghun8leech 的回复:]
建议楼主先学习ext的example文件夹里的例子,把树的最小代码从例子里抠出来,看懂大部分步骤,再改变其树节点的创建方式为异步请求解析和单击事件监听器的挂载。
遇到此类问题时求现成代码往往不是个好方法,当我们贴上大段的代码时楼主还是看不懂。
解决此类问题一是需要将问题细分,逐个击破,二是根据细分的步骤逐步学习解决问题必须的知识,三是心里要有个解决问题的思路,四是要有有效的学习方法。
[/Quote]
up
dinghun8leech 2010-01-21
  • 打赏
  • 举报
回复
建议楼主先学习ext的example文件夹里的例子,把树的最小代码从例子里抠出来,看懂大部分步骤,再改变其树节点的创建方式为异步请求解析和单击事件监听器的挂载。
遇到此类问题时求现成代码往往不是个好方法,当我们贴上大段的代码时楼主还是看不懂。
解决此类问题一是需要将问题细分,逐个击破,二是根据细分的步骤逐步学习解决问题必须的知识,三是心里要有个解决问题的思路,四是要有有效的学习方法。
dage619 2010-01-21
  • 打赏
  • 举报
回复
这是一个很简单,但思路很清晰的树
public String execute(){
HttpServletResponse response = ServletActionContext.getResponse();
List roleIds = userRoleBiz.findByUserId(Long.parseLong(uid));

List list = roleBiz.findAll();
List newList = new ArrayList();
for(int i=0;i<list.size();i++){
Map map = new HashMap();
TRole role = (TRole)list.get(i);
map.put("id",role.getId());
map.put("leaf",true);
map.put("text",role.getRolename());
if(roleIds.contains(role.getId())){
map.put("checked",true);
}else{
map.put("checked",false);
}
newList.add(map);
}
response.setContentType("text/json;charset=utf-8");
JSONArray ja = JSONArray.fromObject(newList);
try {
response.getWriter().print(ja);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
owen_008 2010-01-20
  • 打赏
  • 举报
回复

给楼主顶一个
colin_pxx 2010-01-20
  • 打赏
  • 举报
回复
column tree:
var tree = new Ext.ux.tree.ColumnTree({
width: 550,
height: 300,
rootVisible:false,
autoScroll:true,
title: 'Example Tasks',
renderTo: Ext.getBody(),

columns:[{
header:'Task',
width:330,
dataIndex:'task'
},{
header:'Duration',
width:100,
dataIndex:'duration'
},{
header:'Assigned To',
width:100,
dataIndex:'user'
}],

loader: new Ext.tree.TreeLoader({
dataUrl:'column-data.json',
uiProviders:{
'col': Ext.ux.tree.ColumnNodeUI
}
}),

root: new Ext.tree.AsyncTreeNode({
text:'Tasks'
})
});
});
牛叔 2010-01-20
  • 打赏
  • 举报
回复
确实
ext很多都是做好的例子
改下就是了
楼主去看看
gyj20061111 2010-01-20
  • 打赏
  • 举报
回复
去官网下个ext的包,里面有例子,把数据换成动态的不完了吗?
1 课程目标 学会使用腾讯提供的云开发功能快速开发后台 数据接口,用于存储小程序中用到的数据 学会使用小程序中常见的一些API,比如:分享小程序,拨打手机电话,地图位置等 掌握快速上架一款小程序需要的步骤 前端相关的css以及html,vue等基础不作为本课程的重点,本课程将提供一个基于图鸟UI修改的企业产品展示前端代码,我们在此基础上使用云开发实现页面数据动态化。由于本人是后端开发,对于前端样式等不擅长,所以基本都是直接复制现成的样式简单的修改,要学习前端html,css,js,vue等基础知识的小伙伴可以不必考虑本课程,B站以及其他平台有大量的免费课程。 2 课程内容 本课程将实现一个完整功能的企业产品展示小程序,之前有人找我开发一个农用拖拉机企业展示的小程序,说是要用云开发来,正好我之前没用过云开发,都是自己搭建后端API以及管理后台来开发,因此着一边开发一边录一个云开发的课程,帮助一些同学快速入门云开发,将包括一下内容: 首页 主要产品推荐 顶部铲平轮播图展示 中间产品分类 轮播消息通知 产品价格咨询 用户留下联系方式 全部产品列表展示 产品详细信息展示 用户估价咨询表单,用户向企业出售产品,类似厂家回收 个人中心 注册登录 询价记录 拨打企业电话 查看企业地址 查看企业工作时间 3 使用技术 vue2 uniapp 图鸟UI javascript 腾讯云开发 4 需要的开发工具 图鸟原始模板:https://ext.dcloud.net.cn/plugin?id=14378 hbuilder开发工具: https://www.dcloud.io/hbuilderx.html 微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧