- 浏览: 306252 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
string2020:
spring data jpa整合openjpa报错,楼主能帮 ...
跟我学OpenJPA之三(更快、更高、更强) -
hl174:
执行不了 报错
BeanUtils.copyProperties应用的改进 -
qkhhytyh:
靠 我是搜SSO的 结果出来了这个东西。。。。彻底无语了
Spring+SpringMVC+OpenJPA整合使用心得 -
wqp310520:
什么时候能放出源代码啊
Spring+SpringMVC+OpenJPA整合使用心得 -
simen_net:
chinesejie 写道我在使用simple spring ...
跟我学OpenJPA之三(更快、更高、更强)
先来一个效果图,已在Firefox3.5、IE7、Chrome3中测试正常
完整应用和代码请转到 http://www.iteye.com/topic/553020
拜读了[Ext 3.x + Ext 2.x] 下拉树 Ext.ux.ComboBoxTree 学习了不少东西,但和自己现用的TreeComboBox比较还是发现有些地方不妥,这里列出来大家探讨一下
1、xiexueze修改的下拉树每次展开时都会加载一次json,我测试的结果,不知道是不是我配置不当造成
2、tree貌似必须从外部传递进来,而tree在扩展内部实现
3、不是问题的问题,扩展定义了很多默认属性,修改了一些底层的方法
现在提出我的代码,其实也是ExtJS2.0的时候从其他地方学过来的,自己修改了一些代码,具体出处已经忘记了,如大家发现了请指出,谢谢
Ext.namespace("Ext.ux.form"); Ext.ux.form.TreeComboBox = Ext.extend(Ext.form.ComboBox, { initComponent : function(ct, position) { this.divId = 'tree-' + Ext.id(); if (isNaN(this.maxHeight)) this.maxHeight = 200; Ext.apply(this, { tpl : '<tpl>' + '<div style="height:' + this.maxHeight + 'px;">' + '<div id="' + this.divId + '"></div>' + '</div></tpl>' }); var root = new Ext.tree.AsyncTreeNode({ text : this.rootText, id : this.rootId, loader : new Ext.tree.TreeLoader({ dataUrl : this.treeUrl, clearOnLoad : true }) }); this.tree = new Ext.tree.TreePanel({ border : false, root : root, rootVisible : this.rootVisible, listeners : { scope : this, click : function(node) { this.setValue(node); this.collapse(); } } }); Ext.ux.form.TreeComboBox.superclass.initComponent.call(this); }, onRender : function(ct, position) { Ext.ux.form.TreeComboBox.superclass.onRender.call(this, ct, position); this.on("expand", function() { if (!this.tree.rendered) { this.tree.render(this.divId); } }, this) }, /*以下代码是为了将tree的node设置到combo中 因为我还有一些其他的作用,所以我是将这部分的代码重写到其他地方了 setValue : function(node) { if (typeof node == "object") { this.setRawValue(node.text); if (this.hiddenField) { this.hiddenField.value = node.id; } } else { this.setRawValue(node); } } */ }); Ext.reg('uxtreecombobox', Ext.ux.form.TreeComboBox);
之前的setValue我是直接覆盖了combo的方法
Ext.override(Ext.form.ComboBox, { setValue : function(node) { if (typeof node == "object") { // 当node为object对象时 node和tree里面的对应 this.lastSelectionText = node.text; // 设置显示文本为node的text this.setRawValue(node.text); if (this.hiddenField) { // 设置隐藏值为node的id this.hiddenField.value = node.id; } this.value = node.id; return this; } else { // 当node为文本时 这段代码是从combo的源码中拷贝过来的 具体作用不细说了 var text = node; if (this.valueField) { var r = this.findRecord(this.valueField, node); if (r) { text = r.data[this.displayField]; } else if (Ext.isDefined(this.valueNotFoundText)) { text = this.valueNotFoundText; } } this.lastSelectionText = text; if (this.hiddenField) { this.hiddenField.value = node; } Ext.form.ComboBox.superclass.setValue.call(this, text); this.value = node; return this; } } })
为什么要重写这个方法,请参考Ext.form.ComboBox加载json时刻默认选中的 ...
下面是使用的代码
xtype : 'uxtreecombobox', id : 'Ext.Strong.tyh.combo.yhBmid', hiddenName : 'yhBmid', fieldLabel : '${action.getText("YH_BM")}', editable : false, shadow : true, maxHeight : 200, mode : 'local', displayField : 'text', valueField : 'id', triggerAction : 'all', allowBlank : false, treeUrl : '<@s.url action="tbm_Shu_XianShi!json"/>', rootText : 'root', rootId : '0', // api里面的意思是 //【true to restrict the selected value to one of the values in the list, false to allow the user to set arbitrary text into the field (defaults to false)】 // 我的理解是combo中设置的值 // 能否为不在store中的内容 // 因为如果默认设置为false的时候每次在失去该combo对象的焦点时刻会触发一个事件重新设置一下value // 这个问题我解决了好久才搞定 forceSelection : true, rootVisible : false
为什么forceSelection : true,我们看一下源代码
beforeBlur : function(){ var val = this.getRawValue(), rec = this.findRecord(this.displayField, val); // 注意这里 如果rec不存在且forceSelection为true if(!rec && this.forceSelection){ if(val.length > 0 && val != this.emptyText){ this.el.dom.value = Ext.isDefined(this.lastSelectionText) ? this.lastSelectionText : ''; this.applyEmptyText(); }else{ this.clearValue(); } }else{ if(rec){ val = rec.get(this.valueField || this.displayField); } this.setValue(val); } },
总结一下,ExtJS的确实存在很多陷阱,很多简单的应用都必须从底层去解决,但是也提供了很好的学习机会,ExtJS的代码很多地方都值得我们去认真学习
评论
6 楼
wa114d
2014-01-12
楼主,当我将forceSelection : true的时候,点击节点不能将值赋值给文本啊
5 楼
mingchong2882
2010-09-02
TriggerField 也不行吧。。还是没有好的解决方法,楼主不在
4 楼
crazy.j
2010-09-02
用继承ComboBox么?很多方法不合适吧~继承TriggerField就OK了
3 楼
mingchong2882
2010-09-02
不知道楼主是什么版本的EXT,本人是3.2的
2 楼
mingchong2882
2010-09-02
不加上this.store = new Ext.data.SimpleStore({ fields: [], data: [[]] });就会出错的
1 楼
mingchong2882
2010-09-02
this.on("expand", function() {
alert(this.tree.rendered)
if (!this.tree.rendered) {
this.tree.render(this.divId);
}
}, this)
造成数据延迟,当forceSelection: true时会出问题,因为没有展示的下拉数据,是无法选中某项的
alert(this.tree.rendered)
if (!this.tree.rendered) {
this.tree.render(this.divId);
}
}, this)
造成数据延迟,当forceSelection: true时会出问题,因为没有展示的下拉数据,是无法选中某项的
发表评论
-
GXT3.0学习笔记(一)user.agent的变化
2012-05-09 10:28 4025GXT3.0变化太大,不仅仅是对UiBinder的支持,包括M ... -
GXT(Ext-GWT)3.0正式版发布
2012-05-04 08:03 1810GXT 是Ext GWT的简称。 GXT 即为Ext G ... -
基于Ext-GWT(GXT)+OpenJPA+SpingMVC的综合WEB平台研究开发
2012-02-12 19:55 2724身体原因休息了大 ... -
Ext-GWT(GXT)开发笔记1-整合KindEditor
2012-02-12 07:31 0去年开始很长一段时间一直在研究GXT在项目中的应用,使用了大半 ... -
GWT(GXT)+OpenJPA使用RPC时Date类型出错的情况分析
2011-09-29 09:20 1504先来一个完整的错误提示如下: com.google.gwt. ... -
【Ext-GWT(GXT)】TreePanel异步拖动处理方法
2011-09-21 21:56 1426需求: 一、是个树(废话) 二、能拖动(再次废话) 三、 ... -
GXT 下拉树(Combo Tree)基本实现
2011-07-27 07:25 2602由于项目的需要,一直想将GXT应用起来,可惜去年做了部分测试后 ... -
GWT ExtJS开发图文教程
2010-11-18 21:39 6443JS的前台开发相对JAVA还不算方便,各种优化处理也很让人讨厌 ... -
ExtJS3.2 TextField允许为空失效的问题
2010-04-17 21:41 3580升级到ExtJS3.2之后vtype=email或者其他的Te ... -
建议暂时不要升级到ExtJS 3.2
2010-04-17 19:36 3511ExtJS 3.2是3月底发布后第一时间做了测试,从测试的情况 ... -
ExtJS 3.2 下拉树
2010-04-17 10:13 4462Struts2+Spring2.5+Hibernate3(JP ... -
Ext.grid.GridPanel双击关闭错误的解决
2010-01-20 11:28 1592参考:http://www.extjs.com/forum/s ... -
ExtJS3.1中Ext.tree.TreePanel在IE8中异常显示滚动条的BUG
2010-01-18 18:25 1990今天将http://simen-net.iteye.com/a ... -
关于使用Ext的考虑
2009-12-23 14:43 1709前端时间为了学习Ext, ... -
Struts2+Spring2.5+Hibernate3(JPA)+ExtJS3基本后台-2010-3-4修改 2010-11-1源码
2009-12-21 17:51 17652本项目已经停止维护,请大家不要挖坟了。 我已经重 ... -
文本输入框增加单位名称的方法-2010-1-13修正
2009-12-21 16:42 1595先上效果,已在Firefox3.5、IE7、Chrome3中测 ... -
Ext.form.ComboBox加载json时刻默认选中的解决
2009-12-17 09:07 2360先上效果图,已在Firefox ...
相关推荐
ExtJs3下拉树 分两种方式调用:第一种: xtype : 'combotree', name : 'dm', fieldLabel : 'dm', tree : this.ct this.ct = new Ext.tree.TreePanel({ autoScroll : true, height : 250, border : false, ...
ExtJs4.2没有直接提供下拉树这个组件,但是有例子可以用,文件位置:ext-4.2.1.883\examples\ux\TreePicker.js 但是它有点小毛病吧:默认显示了根节点;达到最小高度时再展开节点,高度不能自动调整。 所以我做了一...
ExtJS 4 下拉树(TreeCombo)是一种组合控件,它将传统的下拉框与树形结构结合在一起,提供了一种在有限空间内展示层级数据的高效方式。这种控件在很多场合都非常实用,例如在需要用户选择分类或者层级结构的场景中...
在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...
1. **下拉树组件**:在ExtJS中,树形组件(TreePanel)用于展示层次结构的数据。它支持动态加载、拖放操作、节点展开和折叠等功能。而下拉树是将树形结构嵌入到下拉框中,通常用于选择一组相关的项目,比如文件夹...
ExtJS下拉树是一种在Web应用中常用的交互组件,它结合了下拉框和树形结构的优点,使得用户可以在一个紧凑的空间内选择嵌套层次的数据。这种组件在数据层级较多,需要用户进行逐级选择或者查看层级关系时非常实用。在...
在ExtJS中,下拉树(ComboBoxTree)是一种结合了下拉框和树结构的组件,它允许用户从一个展开的树形列表中选择值,而不是传统的单行文本输入或简单的下拉列表。这种组件在数据层级结构复杂且需要用户进行多级选择时...
在ExtJS4中,下拉树组件(TreeComboBox)是一种特殊的组合框,它结合了下拉列表和树形结构的功能,允许用户通过选择树节点来填充组合框的值。这种组件广泛应用于需要展示分层数据结构的应用场景中。 #### 二、核心...
标签中的“源码”意味着可能包含了EXTJS 4下拉树组件的源代码,这对于开发者来说非常有价值,因为可以直接查看和修改源代码来适应特定需求,或者研究其内部工作原理。而“工具”标签则表明这可能是一个辅助开发的...
利用extjs6自带的treePicker插件,实现下拉树的效果
首先,我们需了解ExtJS下拉树(TreeComboBox)的概念。下拉树结合了ExtJS的ComboBox和TreePanel的功能,它不仅可以下拉显示列表项,还能够以树形结构的方式展示层级数据,允许用户通过树形结构选择一个或多个节点。 ...
在ExtJS 3中,实现异步下拉树涉及到几个关键概念和技术。 首先,理解“异步”意味着数据不是一次性加载完毕,而是按需加载。在下拉树中,当用户展开树节点时,只加载该节点及其子节点的数据,这减少了初始页面加载...
### Extjs自定义组件——下拉树:深入解析与实现 在现代Web开发中,Extjs作为一款功能强大且灵活的框架,深受开发者喜爱。它提供了丰富的UI组件库,能够帮助开发者快速构建复杂的用户界面。其中,自定义组件是Extjs...
在ExtJS4中,多选下拉树(Multi Select Tree)是一种用户界面组件,它结合了下拉菜单和树形结构,允许用户从层级结构中选择多个项目。这个组件在数据管理、分类选择等场景中非常实用。 在实现多选下拉树时,我们...
在EXTJS4中,实现一个下拉树(Combobox Tree)并支持多选和复选功能,主要是通过自定义组件(Ext.define)来完成的。这个组件继承自EXTJS的Picker字段(Ext.form.field.Picker),并添加了树形结构和复选功能。以下...
文件"ComboBoxTree"可能是实现这一组件的源代码或者配置文件,包含了实现下拉树组件的JavaScript代码和相关的配置信息。如果需要深入了解或修改这个组件,你需要查看这个文件的内容,理解其中的数据结构、事件处理和...
在EXTJS4中,`ComboBox` 是一个非常常用的组件,它提供了一个下拉选择框的功能。在某些场景下,我们可能需要在下拉菜单中展示更丰富的信息,比如表格数据,这时就可以使用 `GridComboBox`。`GridComboBox` 结合了 `...
在EXTJS4中,下拉菜单树(ComboBox+Tree)是一种高级UI组件,它结合了ComboBox的下拉选择框和TreePanel的树形结构,提供了一种用户友好的交互方式,用于展示层次化的数据。这种组件特别适用于需要从多个选项中进行...
在ExtJS中,下拉列表树控件(ComboBox Tree)是常见的组件之一,它结合了下拉列表和树结构,提供了更丰富的用户界面。这个控件允许用户从一个层级化的数据结构中进行选择,非常适合于展示有层次关系的数据。 在创建...
在ExtJS6中,下拉列表(ComboBox)是一种常见的组件,用于提供用户可以选择的预定义选项。这个框架提供了丰富的功能和定制性,使得下拉列表不仅能够简单地显示一组静态选项,还能与数据源进行联动,展示动态加载的...