首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

在ExtJS的ComboBox组件中实现上拉树效果

2012-11-08 
在ExtJS的ComboBox组件中实现下拉树效果刚好项目需要用到在ExtJS的ComboBox组件中实现下拉树效果GOOGLE 就

在ExtJS的ComboBox组件中实现下拉树效果

刚好项目需要用到在ExtJS的ComboBox组件中实现下拉树效果GOOGLE 就是好用 下面是我找的博文

看了很多关于EXT下拉树的实现, 发现很多例子都是对EXT原有的类进行扩展, 而且都发现用起来很费劲,在这里,本人实现的EXT下拉树是直接使用 Ext.form.ComboBox + Ext.tree.TreePanel, 将两者结合起来,不需要额外的扩展

效果可见附件一

JS代码如下:

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

  

这里的使用了Ext.tree.DWRTreeLoader 调用后台方法读取结点, 和下拉树的实现本身没任何关系,你可以使用任何的loader去加载树结点,需要注意的是,ComboBox的tpl里的<div id='tree'>这个ID可以改成别的, 但必须要在'expand'事件里, 将树显示在这个div上

就是如此简单...

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

效果图见附件二

js代码如下:

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

 

附件一:

在ExtJS的ComboBox组件中实现上拉树效果

附件二:

在ExtJS的ComboBox组件中实现上拉树效果

1楼Tender001前天 21:00
from:http://www.iteye.com/topic/164424

热点排行