Extjs4--Ext.tree.Panel实现可选择树
来源:互联网 发布:新网域名怎么设置ip 编辑:程序博客网 时间:2024/04/28 15:14
1.说明
最近项目中要求创建一个可以选择的Tree,特此总结一下,大家一起学习。
2.源码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" src="../ext-all.js"></script><link rel="stylesheet" type="text/css" href="../resources/css/ext-all-debug.css" /><title>Insert title here</title><script type="text/javascript">Ext.onReady(function(){ //menu数据 var data = [{"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false, "children": [{"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false,"children":null,"expanded":false,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"26","infoMap":null,"leaf":true,"text":"查询所有用户"}, {"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false,"children":null,"expanded":false,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"27","infoMap":null,"leaf":true,"text":"删除用户"}], "expanded":true,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"deviceSystem","infoMap":null,"leaf":false,"text":"用户管理"}, {"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false, "children":[{"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false,"children":null,"expanded":false,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"37","infoMap":null,"leaf":true,"text":"查询所有设备"}, {"allowDelete":false,"allowDrag":false,"allowDrop":false,"allowEdit":false,"checked":false,"children":null,"expanded":false,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"38","infoMap":null,"leaf":true,"text":"更新设备"}], "expanded":true,"hidden":null,"href":null,"hrefTarget":null,"icon":null,"iconCls":"node","id":"emailServers","infoMap":null,"leaf":false,"text":"设备管理"} ]; var treeStore= Ext.create('Ext.data.TreeStore', { autoLoad: true, proxy: { //数据来自于内存 type: 'memory', data: data }, root: { expanded: true } }); /*** * 选中树节点状态变化调用该函数 * 【全选】,【取消全选】操作在这里实现 */ function onCheckchange(node, checked, eOpts){ //如果不是叶子节点 if(!node.isLeaf()){ //扩展,设置为选中状态 node.expand(); node.data.checked = checked; node.eachChild(function(child){ //设置每一个子节点选中状态,并更新画面显示 child.data.checked = checked; child.triggerUIUpdate(); }); } }; //确认按钮 var confirm = Ext.create('Ext.button.Button', { text: '确认', handler: onSubmit }); //树面板 var treePanel = Ext.create('Ext.tree.Panel',{ stripeRows: true, border:0, width:300, height: 250, style: { borderRight: 'none' }, rootVisible: false, store: treeStore, useArrows: true, tbar: { items: [{ xtype: 'tbspacer', flex: 1 }, confirm ] }, listeners:{ checkchange:onCheckchange } }); /*** * 确认事件处理函数。 */ function onSubmit(){ //获取树中所有选择的节点 var records = treePanel.getView().getChecked(); var names = []; Ext.Array.each(records, function(rec){ //只保存子节点的数据 var leaf = rec.get('leaf'); if(leaf){ var text = rec.get('text'); names.push(text); } }); var nameStr = names.join('<br />'); Ext.Msg.alert('提示','您选择了:<br />'+nameStr); }; //显示Window Ext.create('Ext.window.Window', { title: '可选择树展示', height: 260, width: 300, layout: 'fit', items: [ treePanel ] }).show();});</script></head><body></body></html>
3.运行效果:
点击父节点,可以同时选中其下所有的子节点。实现【全选】【取消全选】的功能。
4.特别说明
当我们向后台请求数据时,需要要向后台传递一些自定义的参数。
对于Ext.data.Store,我们可以指定param。
但Ext.data.TreeStore则不同,指定param实验后无效。
Ext.create('Ext.data.TreeStore',{ //nodeParam是节点参数,注意这个是参数名,defaultRootId是参数值。 nodeParam : 'roleId', defaultRootId : roleId});
0 0
- Extjs4--Ext.tree.Panel实现可选择树
- ExtJS4 Ext.tree.Panel获取Node对象
- Ext.tree.panel
- ExtJS4+Servlet/Struts2+JSON+accordion布局动态Ext.tree.Panel菜单
- 【无事水一发】ExtJS4 Ext.tree.Panel (无限层级)带复选框树勾选(父级子级)联动代码
- Extjs4.x Ext.tree.Panel 过滤Filter以及trigger field的使用
- ExtJS4+Servlet/Struts2+JSON+accordion布局动态Ext.tree.Panel菜单
- ExtJs4 Ext.tab.Panel 选项卡
- ExtJs4-Ext.tab.Panel添右键关闭
- ExtJs4 Ext.tab.Panel 选项卡
- 关于extjs4.2中的Ext.form.Panel
- Ext.tree.Panel 点击事件
- Ext4.x 树表格控件【Ext.tree.Panel】 Demo
- ExtJs之结构树 Ext.tree.panel详细用法
- ExtJs4 笔记(10) Ext.tab.Panel 选项卡
- ExtJs4 笔记(10) Ext.tab.Panel 选项卡
- 关于extjs4的Ext.form.Panel重置问题
- ExtJs4 笔记(10) Ext.tab.Panel 选项卡
- 安装ADT步骤
- php apc 缓存
- 使用Eclipse开发Java Web过程中Debug调试的使用方法
- Unable to locate package错误解决办法
- 文件删除后怎么才能恢复
- Extjs4--Ext.tree.Panel实现可选择树
- 最近在cloudstack邮件组看到有人提问虚拟机创建失败
- Handler(2)
- WPF 控件之 Popup
- 启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析
- Eclipse查看hadoop源代码出现Source not found
- MyEclipse 6.0.1 自动生成注册码
- java.sql.data与Java.util.data之间转换
- bind()的作用到底是什么