`

Extjs Tree简单使用

    博客分类:
  • JS
 
阅读更多

一、

效果图:



 

js部分:

var isgn = false;
		var modifyColumn = new Ext.Button({
	   	 	id:'modifyColumn',
	        text: "展开",
	        iconCls:'btn_expand',
	        listeners:{
			 	click:function(){
		 			var gridM = Ext.getCmp('grid').getColumnModel();
		 			for (var i = 14 ; i < 26 ; i++){
		 				gridM.setHidden(i,isgn);
		 			}
		 			if(isgn){
		 				this.setText("展开");
		 				this.setIconClass('btn_expand');
			 			isgn = false;
			 		}else{
			 			this.setText("收缩");
			 			this.setIconClass('btn_collapse');
				 		isgn = true;
				 	}
		 		}
		 	}
	    });
 

 

二、Tree

效果图:

    

 

js部分:

 

function loadTree(){
		try{
		 //重写TreePanel,支持check复选框
		 Ext.override(Ext.tree.TreeNodeUI, {
			toggleCheck:function (value) {
			var cb = this.checkbox;
			if (cb) {
				cb.checked = (value === undefined ? !cb.checked : value);
				this.node.attributes.checked = cb.checked;
				this.fireEvent("checkchange", this.node, cb.checked);
				}
			}
		}); 
		if(treePanel)return ;
		
		treePanel=new Ext.tree.TreePanel({
			id: treePanel,
			xtype:'treepanel',
			split:true,
			border:true,
			width:300,
			height:500,
			collapsible:false,
			autoScroll:true,
			animate: true,// 动画效果
      enableDD: false,// 是否支持拖拽效果
      containerScroll: true,// 是否支持滚动条
			bodyStyle : 'margin:0px',
			loadMask: {msg: '数据加载中...'},
			applyTo:'tree',
			
			//定义根节点  异步加载根节点 
			root: new Ext.tree.AsyncTreeNode({id:'root', expanded: true}),
			loader: new Ext.tree.TreeLoader({dataUrl: urlpath + '/project/manage/edit/uItemMember.do?action=getDptUsers&check=false'}),
			
			rootVisible:false,
			
			// 设置树的点击事件
			listeners: {
				//单击选中复选框,在点击添加按钮 添加人员
		        'click': function(node) {
		        	if(!node.isLeaf){
		        		dptId = node.id;
						    dptName = node.text;
						   //查询部门下的人员
					     store.load({params:{
							     dptId:dptId,
							     dpt:dptName
						   }}); 
		        	}else{
		        		//设置UI状态为选中状态
				    	   node.getUI().toggleCheck(true);
				    	  //设置节点属性为选中状态
				    	   node.attributes.checked = true;
		        	}
		    	},
		    	//双击直接添加人员
		    	'dblclick':function(node,e){
		    		if(!node.id != 1 && node.isLeaf()){
		    			var userid = node.id.substring(0,node.id.length-6);//去掉UItemMemberController.java中添加的666888
		    			var name = node.text;
		    			var dpt = node.parentNode.text;
		    			var phone = node.attributes.phone;
		    			var email = node.attributes.email;
		    			var roleid = '';
		    			
		    			var record = new Ext.data.Record({
							userid : userid,
							name : name,
							phone : phone,
							email : email,
							roleid : roleid,
							dpt : dpt
						});

					   var rightstore = Ext.getCmp("rightPanel").getStore();
					   var arr = new Array();
					   for(var ii=0; ii < rightstore.getCount(); ii++){
						   var rightRecord = rightstore.getAt(ii);
						   var userId = rightRecord.get("userid");
						   arr[ii] = userId;
						   
					   }
					   var j = in_array(arr, userid);
					   if(j == -1){
					   		var len = rightstore.getCount();
						   	if((len>0 && isMultiple=='0') ||'${pmName}' == 'yes'){
								rightStore.removeAll();
						   	}
					    	rightStore.insert(rightStore.getCount(),record);
					   }
		    		}
		        }
			}
		});
		//第一个true是自动展开所有子节点,第二个true是以动画效果展开树  
		//treePanel.getRootNode().expand(true,true); 
		
		if('${pmName}' == 'yes' ||'${isMultiple}'=='0'){ //修改项目经理
			//使单位树上的复选框只可选中一个
			treePanel.on('checkchange', function(node, checked) {       
	            node.attributes.checked = checked;   
	          var chs  = treePanel.getChecked();  
	          for(var i = 0; i < chs.length; i++) {  
	             if (chs[i].attributes['id'] != node.attributes['id']){  
	                chs[i].ui.toggleCheck(!checked);   
	             }  
	        }}, treePanel); 	
		}
	  }catch(e){Ext.Msg.alert("提示错误信息",e.message);}	
	};

 

 

后台java部分:

 

StringBuffer sbfUser = new StringBuffer();
		sbfUser.append("[");
		if (users != null && users.size() > 0) {
			for (User user : users) {
				sbfUser.append("{");
				sbfUser.append("id:'" + user.getId() + "666888'," + "sex:'"
						+ user.getSex() + "'," + "phone:'" + user.getMphone()
						+ "'," + "email:'" + user.getEmail() + "'," + "text:'"
						+ user.getName() + "'," + "leaf:" + true + ","
						+ "icon:'" + basePath
						+ "/themes/default/images/employee.png" + "',"
						+ "checked:" + checked + "," + "singleClickExpand:"
						+ true);// ",checked:"+checked+ 树上出现复选框
				sbfUser.append("},");
			}
		}

		StringBuffer sbfDpt = new StringBuffer();
		boolean leaf = false;
		if (subDptList != null && subDptList.size() > 0) {
			for (Dpt subDpt : subDptList) {
				sbfDpt.append("{");
				if (subDpt.getDptid() == 1) {
					sbfDpt.append("id:'" + subDpt.getDptid() + "',text:'"
							+ subDpt.getDptname() + "',expanded:true,leaf:"
							+ leaf + ",singleClickExpand:" + true);
				} else {
					sbfDpt.append("id:'" + subDpt.getDptid() + "',text:'"
							+ subDpt.getDptname() + "',leaf:" + leaf
							+ ",singleClickExpand:" + true);// ",checked:"+checked 树上出现复选框
				}

				sbfDpt.append("},");
			}
			String str = sbfDpt.substring(0, sbfDpt.lastIndexOf(","));
			//清空sbfDpt下一次再使用
			sbfDpt.delete(0, sbfDpt.length());
			sbfDpt.append(str);
		}

		StringBuffer sbfDptUser = new StringBuffer();
		sbfDptUser.append(sbfUser).append(sbfDpt).append("]");

		AjaxUtils._write(response, sbfDptUser);

 

 

 

  • 大小: 21.8 KB
  • 大小: 1.1 KB
  • 大小: 600 Bytes
分享到:
评论

相关推荐

    Extjs tree实例【源代码】

    ExtJs 2.2.1 tree实例,内附mysql数据文件 1. 数据节点一次性加载 2. 节点分为两个类(项目和设备) 3. 右键菜单 4. 节点增、删、改操作 ....... 后台是java struts1。 本例旨在说明extjs的tree操作,后台操作很简陋...

    extjs tree

    ExtJS Tree是基于ExtJS框架实现的一种数据结构展示方式,它主要用于展示层级关系的数据,例如组织结构、文件系统等。ExtJS是一个强大的JavaScript库,专为构建富客户端Web应用程序而设计,提供了丰富的组件化功能和...

    ExtJS Tree教程及例子代码

    2. **配置项**:TreePanel有许多配置项,如`rootVisible`(是否显示根节点)、`useSimpleItems`(是否使用简单的文本表示节点,而非完整的TreeNodes)、`store`(存储节点数据的Store对象)等。 3. **数据源**:...

    extjs tree 节点 链接 新窗口

    在ExtJS中,Tree是一个非常重要的组件,它用于呈现层级结构的数据。在处理Tree节点时,特别是涉及到链接和新窗口打开的情况,有一些特定的技术要点需要注意。 首先,标题“extjs tree 节点 链接 新窗口”指的是在...

    Extjs tree的简单小例子

    在本文中,我们将深入探讨EXTJS中的树形组件(TreePanel),以及如何创建一个简单的异步加载和拖放功能的示例。EXTJS TreePanel 是一个强大的组件,用于展示层次结构数据,通常用于组织目录、文件系统或组织结构等。...

    Extjs的Tree和Tab使用json做tree数据交互

    在ExtJS中,Tree和Tab是两种常用的组件,分别用于展示层次结构的数据(如目录结构)和创建多页面布局。本篇文章将详细探讨如何利用JSON数据来实现这两者的交互。 首先,让我们了解一下`Tree`组件。在ExtJS中,Tree...

    用ExtJS实现动态载入树

    本文将使用Oracle数据库来构建一个简单的组织架构表。 - **表结构**: ```sql CREATE TABLE ORGANIZATION ( ORGID NUMBER(10) NOT NULL, PARENTID NUMBER(10) NOT NULL, ORGNAME VARCHAR2(32) NOT NULL, IS...

    基于ExtJS的简易图书管理系统

    其次,ExtJS的数据绑定机制使得UI与后台数据之间的交互变得简单。系统可能使用了Store对象来存储图书数据,并与Grid或其他组件进行双向绑定,当数据变化时,UI会自动更新,反之亦然。这种数据驱动的开发模式极大地...

    解决 extjs2.2 给tree-panel 添加 checkbox 的add-on

    在EXTJS 2.2版本中,Tree Panel是EXTJS框架中用于展示树形结构数据的一个组件,但原生的EXTJS 2.2并未提供内置的复选框(checkbox)功能,这对于需要用户进行多选操作的场景来说是一个限制。标题提到的“解决extjs...

    Extjs 通用后台模板| 经典 Tree+Tab+Grid

    这个"Extjs 通用后台模板| 经典 Tree+Tab+Grid"是一个基于ExtJS的预配置模板,它集成了常见的界面元素,如树形视图(Tree)、选项卡(Tab)和网格(Grid),为开发高效能、用户友好的后台应用提供了便利。...

    extjs2----关于extjs 的使用,操作

    4. **数据绑定**:阐述ExtJS的数据模型(Store)和数据显示组件(Grid、Tree)之间的数据绑定机制,包括XML、JSON数据源的加载。 5. **表单元素**:深入探讨表单(Form)的创建,包括各种表单字段(TextField、...

    ExtJS中editable-column-tree组件的使用 示例

    本篇将详细介绍ExtJS中的editable-column-tree组件的使用,并通过示例进行解析。 首先,`editable-column-tree`组件是ExtJS中的一种特殊类型的树形视图,它允许用户直接在树节点的列中编辑数据。这种功能在需要对树...

    extjs 简单框架搭建

    9. **部署**:最后,将构建后的文件部署到服务器,用户就可以通过浏览器访问并使用你的EXTJS应用了。 EXTJS的学习曲线相对较高,但一旦掌握,就能创建出功能强大且美观的Web应用。在实际开发中,还需要熟悉MVC设计...

    ExtJs简单的快速搜索例子[search]

    在"ExtJS简单的快速搜索例子[search]"中,我们关注的是如何在ExtJS的Grid或Tree组件中实现快速搜索功能。这个示例主要涉及到以下几个核心知识点: 1. **ExtJS Grid组件**:Grid是ExtJS中用于展示表格数据的主要组件...

    中文的Extjs的api手册

    9. **事件处理**:ExtJS的事件模型使得组件之间的交互变得简单,开发者可以监听和响应各种用户操作。 10. **国际化支持**:虽然这里的API手册是中文版,但ExtJS本身支持多语言,方便不同地区用户使用。 尽管3.3...

    ExtJS 自定义树组件 节点的操作 搜索 右键菜单

    功能: 1.实现ExtJS tree 节点右键菜单 实现增删查. 2.实现针对实体数据的动态搜索. 3.代码命名规范,简单易懂. 4.支持IE 9,FF 19.0.2. 5.将文件解压至ext包example任意组件文件夹即可浏览效果.

    免费 Extjs4.0教程视频

    - 展示如何使用Extjs内置的Ajax请求方法发起请求,并处理响应。 #### 第九讲:Extjs 4.0的core包和Ext类 - **core包和Ext类**: - core包包含了一系列核心工具类和实用函数。 - Ext类是Extjs中的基础类,提供了...

    EXTJS3.0中文API (离线)

    1. **组件系统**:EXTJS的核心是其组件模型,包括窗口(Window)、面板(Panel)、表单(Form)、表格(Grid)、树(Tree)等。这些组件都是可重用的,可以组合起来构建复杂的用户界面。 2. **数据绑定**:EXTJS...

    ExtJS 3.4.0

    1. **组件化**:ExtJS 强调的是组件化的开发模式,它提供了多种预定义的UI组件,如表格(Grid)、树形视图(Tree)、表单(Form)、面板(Panel)等,这些组件可以独立使用,也可以组合起来创建更复杂的应用界面。...

Global site tag (gtag.js) - Google Analytics