EXT2.0 下拉树例子

看了很多关于EXT下拉树的实现, 发现很多例子都是对EXT原有的类进行扩展, 而且都发现用起来很费劲

 

在这里,本人实现的EXT下拉树是直接使用 Ext.form.ComboBox + Ext.tree.TreePanel, 将两者结合起来,不需要额外的扩展

效果图可见附件一

JS代码如下:

Js代码 复制代码
  1. var comboxWithTree = new Ext.form.ComboBox({  
  2.         store:new Ext.data.SimpleStore({fields:[],data:[[]]}),  
  3.         editable:false,  
  4.         mode: 'local',  
  5.         triggerAction:'all',  
  6.         maxHeight: 200,  
  7.         tpl: "<tpl for='.'><div style='height:200px'><div id='tree'></div></div></tpl>",  
  8.         selectedClass:'',  
  9.         onSelect:Ext.emptyFn  
  10.     });  
  11.     var tree = new Ext.tree.TreePanel({  
  12.         loader: new Ext.tree.DWRTreeLoader({dwrCall:Tmplt.getTmpltTree}),  
  13.         border:false,  
  14.          root:new Ext.tree.AsyncTreeNode({text: '模板根目录',id:'0'})  
  15.       });  
  16.       tree.on('click',function(node){  
  17.           comboxWithTree.setValue(node.text);  
  18.           comboxWithTree.collapse();  
  19.       });  
  20.     comboxWithTree.on('expand',function(){  
  21.         tree.render('tree');  
  22.       });  
  23.     comboxWithTree.render('comboxWithTree');  

 

这里的使用了Ext.tree.DWRTreeLoader 调用后台方法读取结点, 和下拉树的实现本身没任何关系,你可以使用任何的loader去加载树结点

需要注意的是,ComboBox的tpl里的<div id='tree'>这个ID可以改成别的, 但必须要在'expand'事件里, 将树显示在这个div上

就是如此简单...

 

看到这里,聪明的读者就会想到,如此类推,想在下拉表里放任何东西都是可以的,以下例子放一个Panel,效果图见附件二

Js代码 复制代码
  1. var comboxWithPanel = new Ext.form.ComboBox({  
  2.     store:new Ext.data.SimpleStore({fields:[],data:[[]]}),  
  3.     editable:false,  
  4.     mode: 'local',  
  5.     triggerAction:'all',  
  6.     maxHeight: 200,  
  7.     tpl: '<div style="height:200px"><div id="panel"></div></div>',  
  8.     selectedClass:'',  
  9.     onSelect:Ext.emptyFn  
  10. });  
  11. comboxWithPanel.render('comboxWithPanel');  
  12. var tree2 = new Ext.tree.TreePanel({  
  13.     loader: new Ext.tree.DWRTreeLoader({dwrCall:Tmplt.getTmpltTree}),  
  14.     border:false,  
  15.     autoScroll:true,  
  16.     root:new Ext.tree.AsyncTreeNode({text: '模板根目录',id:'0'})  
  17.     });  
  18. var border = new Ext.Panel({  
  19.     title:'面板title',  
  20.     layout:'fit',  
  21.     border:false,  
  22.     height :200,  
  23.     tbar:[{text:'确定一'},'-',new Ext.form.TextField({id: 'paramCnName',width:60}),{text:'查找一'}],  
  24.     bbar:[{text:'确定二'},'-',new Ext.form.TextField({id: 'aa',width:60}),{text:'查找二'}],  
  25.     items: tree2  
  26.     });  
  27. comboxWithPanel.on('expand',function(){  
  28.     border.render('panel');  
  29.     });  
 

 

  • 4cac3127-c725-3a1f-8d98-7154a73dcf31-thumb
  • 描述:
  • 大小: 153 KB
  • 2ab189d6-7328-3577-bf63-49797b651612-thumb
  • 描述:
  • 大小: 150.3 KB
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值