- 浏览: 42719 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
extjs4下拉选择树,代码是从网上找到的。
控件源代码:
使用方法
返回数据:
服务端数据和平常一样
控件源代码:
Ext.define('Ext.tree.ComboTree',{ extend :"Ext.form.field.Picker", alias: 'widget.combotree', requires: ['Ext.form.*','Ext.tree.Panel'], rootText:this.rootText||'root', rootId:this.rootId||'0', rootVisible:this.rootVisible||false,//根节点是否可见 nodeParam:this.nodeParam||'id', treeUrl:this.treeUrl, //这里是点击树前加号须返回的JSON格式节点数据 multiSelect:this.multiSelect||false, fieldName:'category', useId:this.useId||true, //是否使用id域,如果不选择,则值直接使用Picker的value值 selectedIds:'', values:'', texts:'', editable:this.editable||true,//是否可编辑 leafOnly:this.leafOnly||true, //限定是否只能选择叶子节点 hiddenField:null, resetValues:function(){ if(this.hiddenField) this.hiddenField.setValue(''); this.values=''; this.texts=''; this.setValue(''); }, initComponent:function(){ var self = this; if(self.useId) self.hiddenField=Ext.create('Ext.form.field.Hidden',{id:self.fieldName+"Id",name:self.fieldName+"Id"}); //由于Picker本身的value对应的是显示的文本,所以这里我们新建了一个隐藏域,用来保存诸如id等值,而不是直接的文本值,在表单提交的时候,就可以直接使用这个值了 Ext.apply(self, { pickerAlign : "tl", name:self.fieldName }); self.callParent(); if(self.useId){ this.on('afterrender',function(){ self.ownerCt.add(self.hiddenField); },this); } }, createPicker : function() { var self = this; var aurl=self.treeUrl; if(self.multiSelect){ //这里增加了多选的功能,在后台返回的JSON数据中,应加上checked:true之类的属性 if(aurl.indexOf("?")==-1) aurl+="?multiSelect=true&selectedIds="+self.selectedIds; else aurl+="&multiSelect=true&selectedIds="+self.selectedIds; } if(self.leafOnly){ if(aurl.indexOf("?")==-1) aurl+="?leafOnly=true"; else aurl+="&leafOnly=true"; } var store = Ext.create('Ext.data.TreeStore', { proxy : { type : 'ajax', url : aurl }, nodeParam:self.nodeParam, root: { expanded: true , text: self.rootText, id:self.rootId, leaf:false }, autoLoad:true }); self.picker = new Ext.tree.Panel({ height : 300, autoScroll : true, floating : true, focusOnToFront : false, shadow : true, ownerCt : this.ownerCt, useArrows : true, store : store, rootVisible : self.rootVisible }); self.picker.on({ beforehide : function(p) { self.setValue(self.texts); if(self.useId) self.hiddenField.setValue(self.values); } , itemclick:function(view,record){ if(self.leafOnly){ if(record.get('leaf')) //这里限定只有叶子节点可以选择 setToValues(record); else{ record.expand(); } }else{ setToValues(record); } function setToValues(record){ if(!self.multiSelect){ self.values=record.get('id'); self.texts=record.get('text'); self.collapse(); }else{ var records = self.picker.getView().getChecked(), ids=[], names = []; Ext.Array.each(records, function(rec) { ids.push(rec.get('id')); names.push(rec.get('text')); }); self.values=ids.join(','); self.texts=names.join(','); } if(self.useId){ self.hiddenField.setValue(self.values); } self.setValue(self.texts); } } }); return self.picker; }, alignPicker : function() { var me = this, picker, isAbove, aboveSfx = '-above'; if (this.isExpanded) { picker = me.getPicker(); if (me.matchFieldWidth) { picker.setWidth(me.bodyEl.getWidth()); } if (picker.isFloating()) { picker.alignTo(me.inputEl, "", me.pickerOffset); isAbove = picker.el.getY() < me.inputEl.getY(); me.bodyEl[isAbove ? 'addCls' : 'removeCls'](me.openCls+ aboveSfx); picker.el[isAbove ? 'addCls' : 'removeCls'](picker.baseCls+ aboveSfx); } } } });
使用方法
var tree = Ext.create('Ext.tree.ComboTree',{rootText:'Info Category',fieldLabel:'Category',treeUrl:'/category/listByParentId.do',rootVisible:true,editable:false});
返回数据:
JSONObject result = new JSONObject(); result.put("children",array);
服务端数据和平常一样
String categoryId = request.getParameter("categoryId"); String categoryName = request.getParameter("category");
发表评论
-
EXTJS4 Form表单中Combox取值与设置值问题
2013-11-25 21:54 2129extjs中combobox取值会取到显示值,取不到value ... -
javascript split用法
2013-11-21 22:17 0var array = picValue.split(':') ... -
extjs4使用google map
2013-11-20 23:36 1646首先引入JS <script src=&quo ... -
extjs4与FCKeditor整合
2013-11-19 23:25 956EXTJS4与FCKeditor整合: 1.自定义C ... -
ext工具栏分隔组件
2013-09-23 09:31 480工具栏组件有 ----------------------- ... -
ckeditor在EXTJS4.0里窗口被遮住的解决办法
2013-09-04 17:40 466Ext.WindowManager.s ... -
EXTJS CheckboxGroup重写setValue与getValue方法
2013-08-21 10:20 1360取到的值是:"1,2"这种形式 var ... -
JS引入时注意事项
2013-06-14 21:12 0引入EXTJS的JS文件时应该要用下面的写法 &l ... -
关于ext.from.BasicForm的errorReader
2010-12-09 10:36 1144由于公司的FORM提交都是返回JSON数据,现在有一个FORM ...
相关推荐
ExtJS 4 下拉树(TreeCombo)是一种组合控件,它将传统的下拉框与树形结构结合在一起,提供了一种在有限空间内展示层级数据的高效方式。这种控件在很多场合都非常实用,例如在需要用户选择分类或者层级结构的场景中...
在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...
在EXTJS4中,下拉菜单树(ComboBox+Tree)是一种高级UI组件,它结合了ComboBox的下拉选择框和TreePanel的树形结构,提供了一种用户友好的交互方式,用于展示层次化的数据。这种组件特别适用于需要从多个选项中进行...
ExtJs4.2没有直接提供下拉树这个组件,但是有例子可以用,文件位置:ext-4.2.1.883\examples\ux\TreePicker.js 但是它有点小毛病吧:默认显示了根节点;达到最小高度时再展开节点,高度不能自动调整。 所以我做了一...
1. **下拉树组件**:在ExtJS中,树形组件(TreePanel)用于展示层次结构的数据。它支持动态加载、拖放操作、节点展开和折叠等功能。而下拉树是将树形结构嵌入到下拉框中,通常用于选择一组相关的项目,比如文件夹...
在ExtJS4中,下拉树组件(TreeComboBox)是一种特殊的组合框,它结合了下拉列表和树形结构的功能,允许用户通过选择树节点来填充组合框的值。这种组件广泛应用于需要展示分层数据结构的应用场景中。 #### 二、核心...
总的来说,这个EXTJS4的下拉树组件实现了树形结构的选择,允许用户多选或复选节点。通过自定义事件和方法,我们可以灵活地控制树的显示和用户交互,使其适应项目的具体需求。在实际开发中,可以将此组件引入到你的...
ExtJs3下拉树 分两种方式调用:第一种: xtype : 'combotree', name : 'dm', fieldLabel : 'dm', tree : this.ct this.ct = new Ext.tree.TreePanel({ autoScroll : true, height : 250, border : false, ...
标题中的“Extjs4 下拉树”指的是EXTJS框架中的一个组件,用于实现下拉菜单与树形结构的结合,这种组件通常在需要选择层级结构数据时非常有用,比如地区选择、组织架构选择等。EXTJS是Sencha公司开发的一个...
在ExtJS中,下拉树(ComboBoxTree)是一种结合了下拉框和树结构的组件,它允许用户从一个展开的树形列表中选择值,而不是传统的单行文本输入或简单的下拉列表。这种组件在数据层级结构复杂且需要用户进行多级选择时...
在ExtJS4中,多选下拉树(Multi Select Tree)是一种用户界面组件,它结合了下拉菜单和树形结构,允许用户从层级结构中选择多个项目。这个组件在数据管理、分类选择等场景中非常实用。 在实现多选下拉树时,我们...
ExtJS下拉树是一种在Web应用中常用的交互组件,它结合了下拉框和树形结构的优点,使得用户可以在一个紧凑的空间内选择嵌套层次的数据。这种组件在数据层级较多,需要用户进行逐级选择或者查看层级关系时非常实用。在...
在描述中提到了 "extjs下拉树",这可能是指 `Ext.tree.TreePanel` 结合 `TreeStore` 来实现的下拉树结构。下拉树允许用户从一个下拉框中选择一个树形结构的节点。实现方式是在 `ComboBox` 的配置中添加一个 `tree` ...
综上所述,ExtJS 4.x的ComboboxTree组件是实现下拉树形菜单的强大工具,它结合了下拉框的简洁和树结构的层次感,提供了丰富的定制选项,能满足多种场景下的需求。理解并熟练掌握其用法,将极大地提升开发效率和用户...
总结起来,ExtJS下拉列表树控件的应用涉及到多个知识点,包括但不限于数据源的构建、ComboBox Tree的配置、GridPanel的编辑功能、事件监听及处理,以及在具体场景中的问题解决。通过理解这些概念并实践,可以创建出...
利用extjs6自带的treePicker插件,实现下拉树的效果
### ExtJs4 实现下拉树选择框 ComboTree #### 概述 在现代Web应用开发中,ExtJS 是一个非常强大的JavaScript库,用于构建复杂的客户端应用程序。它提供了丰富的组件库,使得开发者能够轻松地创建出功能丰富且交互性...
extjs 树形下拉列表框,可以进行数据选择,数据回显。
### Extjs自定义组件——下拉树:深入解析与实现 在现代Web开发中,Extjs作为一款功能强大且灵活的框架,深受开发者喜爱。它提供了丰富的UI组件库,能够帮助开发者快速构建复杂的用户界面。其中,自定义组件是Extjs...
使用方法: var comb = Ext.create('Ext.ux.ComboTree',{ name:'xzqh', dicName:'test', width : 270, fieldLabel : '行政区划', url:'getDic', all:true, labelWidth : 60, multiple:true ...