`
zccst
  • 浏览: 3299776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ExtJS表单之下拉树

 
阅读更多
ExtJS表单之下拉树
作者:zccst

一、数据源
					var store_type = Ext.util.JSON.encode(o.store_type);
					var store_type_obj = eval( "(" + store_type + ")" );
					setStoreTreeByNode(store_type_obj);


二、展示
	Ext.QuickTips.init();
	var storetree = new Ext.tree.TreePanel({
		//el : "container",
		animate : true,
		title : "请点击选择",
		collapsible : true,
		enableDD : true,
		enableDrag : true,
		rootVisible : false,
		autoScroll : true,
		autoHeight : true,
		width : 150,
		lines : true
	});

	// 根节点
	var storeroot = new Ext.tree.TreeNode({
		id : "root",
		text : "根节点",
		checked : false
	});
	storetree.setRootNode(storeroot);
	
	//设置监听
	storetree.on('checkchange', function(node, checked) {
		node.expand();
		node.attributes.checked = checked;
		node.eachChild(function(child) {
			child.ui.toggleCheck(checked);
			child.attributes.checked = checked;
			child.fireEvent('checkchange', child,
					checked);
		});
	}, storetree);
	
	function setStoreTreeByNode(store_type_obj){
		var node = storeroot.appendChild(new Ext.tree.TreeNode({
			text : '存储机型',
			allowDrag : false,
			checked : false
		}));
		for(var i = 0; i < store_type_obj.length; i++){
			node.appendChild(new Ext.tree.TreeNode({
				text : store_type_obj[i].model,
				allowDrag : false,
				checked : false
			}));
		}
	}
	
	//下拉树
	var storeComboxWithTree = new Ext.form.ComboBox({  
		store:new Ext.data.SimpleStore({fields:[],data:[[]]}),  
		editable:false,  
		mode: 'local',  
		triggerAction:'all',  
		maxHeight: 240,  
		tpl: "<tpl for='.'><div style='height:240px'><div id='storetree'></div></div></tpl>",  
		selectedClass:'',  
		onSelect:Ext.emptyFn,
		emptyText:'请选择机型...'
	});
	storetree.on('click',function(node){
		storeComboxWithTree.setValue(node.text);
		storeComboxWithTree.collapse();
	});  
	storeComboxWithTree.on('expand',function(){  
		storetree.render('storetree');  
	});



三、获取选中的值
			var s = storetree.getChecked();
			var checked_s = new Array();
			for (var j = 0; j < s.length; j ++){
				checked_s.push(s[j].text);
			}
			//if(checked_s.length == 0){alert('选择不能为空');return false;}
			var str_s = checked_s.toString();


版本一:
var comboxWithTree = new Ext.form.ComboBox({   
        store:new Ext.data.SimpleStore({fields:[],data:[[]]}),   
        editable:false,   
        mode: 'local',   
        triggerAction:'all',   
        maxHeight: 200,   
        tpl: "<tpl for='.'><div style='height:200px'><div id='tree'></div></div></tpl>",   
        selectedClass:'',   
        onSelect:Ext.emptyFn   
    });   
    var tree = new Ext.tree.TreePanel({   
        loader: new Ext.tree.DWRTreeLoader({dwrCall:Tmplt.getTmpltTree}),   
        border:false,   
         root:new Ext.tree.AsyncTreeNode({text: '模板根目录',id:'0'})   
      });   
      tree.on('click',function(node){   
          comboxWithTree.setValue(node.text);   
          comboxWithTree.collapse();   
      });   
    comboxWithTree.on('expand',function(){   
        tree.render('tree');   
      });   
    comboxWithTree.render('comboxWithTree');  

版本二:
var comboxWithPanel = new Ext.form.ComboBox({   
    store:new Ext.data.SimpleStore({fields:[],data:[[]]}),   
    editable:false,   
    mode: 'local',   
    triggerAction:'all',   
    maxHeight: 200,   
    tpl: '<div style="height:200px"><div id="panel"></div></div>',   
    selectedClass:'',   
    onSelect:Ext.emptyFn   
});   
comboxWithPanel.render('comboxWithPanel');   
var tree2 = new Ext.tree.TreePanel({   
    loader: new Ext.tree.DWRTreeLoader({dwrCall:Tmplt.getTmpltTree}),   
    border:false,   
    autoScroll:true,   
    root:new Ext.tree.AsyncTreeNode({text: '模板根目录',id:'0'})   
    });   
var border = new Ext.Panel({   
    title:'面板title',   
    layout:'fit',   
    border:false,   
    height :200,   
    tbar:[{text:'确定一'},'-',new Ext.form.TextField({id: 'paramCnName',width:60}),{text:'查找一'}],   
    bbar:[{text:'确定二'},'-',new Ext.form.TextField({id: 'aa',width:60}),{text:'查找二'}],   
    items: tree2   
    });   
comboxWithPanel.on('expand',function(){   
    border.render('panel');   
    });  



另一个三级节点的实例

function setDepTreeByNode(obj){
		rootnode = new Ext.tree.TreeNode({
			text : '全部',
			allowDrag : false,
			checked : false
		});
		deproot.appendChild(rootnode);     //0级
		var tmpDep = "";
		var tmpPro = "";
		var tmpSer = "";
		var departnode  = null;
		var productnode = null;
		var servicenode = null;
		for( var i = 0; i < obj.length; i++){
			if(!tmpDep){
				tmpDep = obj[i].department;
				tmpPro = obj[i].product;
				tmpSer = obj[i].service;
			}
			
			// 仅执行一次
			if(departnode == null && productnode == null && servicenode == null){
				departnode = new Ext.tree.TreeNode({
					text : obj[i].department,
					allowDrag : false,
					checked : false
				});
				productnode = new Ext.tree.TreeNode({
					text : obj[i].product,
					allowDrag : false,
					checked : false
				});
				servicenode = new Ext.tree.TreeNode({
					text : obj[i].service,
					allowDrag : false,
					checked : false
				});
				rootnode.appendChild(departnode);       //一级
				departnode.appendChild(productnode);    //二级
				productnode.appendChild(servicenode);   //三级
				continue;//第一轮循环结束
			}
			
			// 追加二级节点
			if(obj[i].department == tmpDep){
				//追加三级节点
				if(obj[i].product == tmpPro){
					servicenode = new Ext.tree.TreeNode({
						text : obj[i].service,
						allowDrag : false,
						checked : false
					});
					productnode.appendChild(servicenode);//三级
					tmpSer = obj[i].service;
				}else{
					productnode = new Ext.tree.TreeNode({
						text : obj[i].product,
						allowDrag : false,
						checked : false
					});
					servicenode = new Ext.tree.TreeNode({
						text : obj[i].service,
						allowDrag : false,
						checked : false
					});
					departnode.appendChild(productnode);    //二级
					productnode.appendChild(servicenode);   //三级
					tmpPro = obj[i].product;
					tmpSer = obj[i].service;
				}
			}else{
				//追加一级节点
				departnode = new Ext.tree.TreeNode({
					text : obj[i].department,
					allowDrag : false,
					checked : false
				});
				productnode = new Ext.tree.TreeNode({
					text : obj[i].product,
					allowDrag : false,
					checked : false
				});
				servicenode = new Ext.tree.TreeNode({
					text : obj[i].service,
					allowDrag : false,
					checked : false
				});
				rootnode.appendChild(departnode);   //一级
				departnode.appendChild(productnode);    //二级
				productnode.appendChild(servicenode);//三级
				//更新当前值
				tmpDep = obj[i].department;
				tmpPro = obj[i].product;
				tmpSer = obj[i].service;
			}
		}
	}


select distinct * from (select department,product,service from service_list) a;



如果您觉得本文的内容对您的学习有所帮助,您可以微信:

分享到:
评论

相关推荐

    精通JS脚本之ExtJS框架.part2.rar

    7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义列宽度 8.2.3 执行按列排序 8.2.4 ...

    精通JS脚本之ExtJS框架.part1.rar

    7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义列宽度 8.2.3 执行按列排序 8.2.4 ...

    extjs中的xtype的所有类型介绍

    xtype 是 ExtJS 的核心组件之一,它提供了大量的组件类型,满足不同场景下的需求。 基本组件 1. button - xtype: 'button', 描述: 普通按钮 2. splitbutton - xtype: 'splitbutton', 描述: 带下拉菜单的按钮 3. ...

    log4Net详解(共2讲)

    国讯OA的一个强大之处就是在于它可以让系统在运作的过程中自动触发请求,并且还可以根据前一个请求的实际状况对下一个触发的请求进行智能选择。 6、分支选择流 根据上一步的选择,选择不同的分支进行流程执行。如...

    基于Extjs的开源控件库ExtAspNet英文版 v3.1.9

    -更新示例框架,增加手风琴控件和树控件的组合菜单(幻之达)。 -修正自动树节点ID的生成规则,防止页面中多个树控件产生的命名冲突。 -修正表格WindowField生成的脚本可能会出现类似x2未定义的错误(梦如人生)。 -...

    基于Extjs的开源控件库ExtAspNet中文版 v3.1.9

    -更新示例框架,增加手风琴控件和树控件的组合菜单(幻之达)。 -修正自动树节点ID的生成规则,防止页面中多个树控件产生的命名冲突。 -修正表格WindowField生成的脚本可能会出现类似x2未定义的错误(梦如人生)。 -...

    javascrip上百技术总集

    下 用javascript操作asp.net label控件 外一篇 用javascript改变onclick调用的函数 用JavaScript加密保护网站页面 用Javascript检测网速的方法 用Javascript评估用户输入密码的强度 用JavaScript...

    基于Vue+SpringBoot实现的通讯录管理系统源码+项目说明(课程设计).zip

    ExtJS 版本是大三《数据库编程》的课程设计,Vue 版本是工作后因个人兴趣编写的版本,如有不足之处敬请谅解。 Vue 版本的项目是一个很好的开发模板哦! `extjs`文件夹下的项目是一个基于 **ExtJS** 和 **SpringBoot...

    EXT教程EXT用大量的实例演示Ext实例

    无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配...

    EXT2.0中文教程

    无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配树...

    Ext 开发指南 学习资料

    无疆界 之 从表格里拖到树上 2.12. 大步流星,后台排序 2.13. grid与右键菜单 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 对tree...

    ExtAspNet控件 v3.1.9源码2012825

    -更新示例框架,增加手风琴控件和树控件的组合菜单(幻之达)。 -修正自动树节点ID的生成规则,防止页面中多个树控件产生的命名冲突。 -修正表格WindowField生成的脚本可能会出现类似x2未定义的错误(梦如人生)。 -...

    从零开始学习JQuery

    从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章...

Global site tag (gtag.js) - Google Analytics