- 浏览: 462206 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
njliukang:
请问一下,如果是异步树,应该怎么解决?貌似用expandpat ...
ExtJS Tree刷新后自动展开并选择节点 -
xiaoyueyue5721:
这是ScriptDataSet,如果换成OdaDataSet呢 ...
Birt动态填充DataSet数据 -
leexiaodong2009:
我准备要用那个锁定。
ExtJS 3.0 优秀扩展简介 (持续更新) -
babyhhcsy:
pizza823 写道分享下另外中方法store里面不用变在列 ...
ExtJS EditorGridPanel中时间日期编辑问题的总结 -
冷月宫主:
高手,请问一下有没有使用Ext做过多表头锁定左侧指定列的处理? ...
仅供纪念,曾做过的一些界面截图
如果你不知道lovcombo是什么,看http://setting.iteye.com/blog/340900
在3.0里面有个BUG,就是选中后,焦点离开的时候,combo的RawValue就没了...
于是分析了下,定位到以下代码:
//Ext.form.ComboBox源码 // private beforeBlur : function(){ var val = this.getRawValue(); if(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{ //关键问题所在 var rec = this.findRecord(this.displayField, val); if(rec){ val = rec.get(this.valueField || this.displayField); } this.setValue(val); } },
1.先来说说LovCombo的原理,
1)其实它就是在store里面加一个field,用来标记是否选中.(配置项 checkField:'checked')
2)value和rawValue都是通过逗号分隔的值(配置项 separator:',')
2.所以我们看上面的var rec=this.findRecor(this.displayField,val);肯定是得不到, rec为null,这时候value就被设置为val,也就是rawValue,但是如下代码,它的setValue判断的是value,所以自然为null
//Ext.ux.form.LovCombo.js setValue:function(v) { if(v) { v = '' + v; if(this.valueField) { this.store.clearFilter(); this.store.each(function(r) { var checked = !(!v.match( '(^|' + this.separator + ')' + RegExp.escape(r.get(this.valueField)) +'(' + this.separator + '|$)')) ; r.set(this.checkField, checked); }, this); this.value = this.getCheckedValue(); this.setRawValue(this.getCheckedDisplay()); if(this.hiddenField) { this.hiddenField.value = this.value; } } else { this.value = v; this.setRawValue(v); if(this.hiddenField) { this.hiddenField.value = v; } } if(this.el) { this.el.removeClass(this.emptyClass); } } else { this.clearValue(); } }
3.修复的办法很简单,
1)重写beforeBlur
var combo = new Ext.ux.form.LovCombo({ width:600, hideOnSelect:false, maxHeight:200, store:new Ext.data.SimpleStore({ id:0, fields:['pid', 'imageName'] }), triggerAction:'all', valueField:'pid', displayField:'imageName', mode:'local', beforeBlur:function(){} });
2)重写findRecord返回多个record,然后在顶上那段粗体部分的代码,遍历record,拼成value,再set进去.
--这个就自己写吧,也不复杂~
评论
5 楼
atian25
2010-11-04
sssgon 写道
问下LZ,如果我想设置默认值该怎么设置呢?就是说一点击下拉的时候已经有默认选中的存在了
你setValue即可
4 楼
sssgon
2010-11-02
问下LZ,如果我想设置默认值该怎么设置呢?就是说一点击下拉的时候已经有默认选中的存在了
3 楼
yangzelai
2010-06-03
呃,错了,应该是:当选择一个下拉项后,lovCombo就把一切设置好了.所以在beforeBlur时,不必做任何值的检查.即写个空的就行了,当然如果不写一个function来覆盖它的话,默认就会继承这个function来执行了.
2 楼
yangzelai
2010-06-03
把这个方法重写一个空的就行了.就是方法体内不写任何东西.
想写也可以,不过我认为没有必要,因为lovcombo的setValue方法里面又自动找了一道.
想写也可以,不过我认为没有必要,因为lovcombo的setValue方法里面又自动找了一道.
1 楼
fireinjava
2010-03-19
天猪强啊按你的意思写的,顺便粘你这呵呵,改了beforeBlur
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }
beforeBlur : function(){ var val = this.getRawValue(); if(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{ var texts = val.split(','); var values=''; for(var i=0;i<texts.length;i++){ var rec = this.findRecord(this.displayField, texts[i].trim()); if(rec){ values+=(values.length>0?',':'')+rec.data[this.valueField]; } } this.setValue(values); } }
发表评论
-
[4.x] Ext.ux.button.AutoRefresher
2011-05-23 11:22 2661/** * @class Ext.ux.b ... -
ExtJS 4.x 定制你的js
2011-05-01 00:04 0... -
ExtJS4.x 随笔(2011-04-29更新)
2011-04-29 13:41 36901.某个激活/禁用的checkboxfield,需要提交后台的 ... -
ExtJS 4.0 改善Ext.grid.plugin.RowEditing (重构,v1.4版本,2011-09-11)
2011-04-27 15:24 12514Ext4.0 自带的Ext.ux.RowEditing还不够完 ... -
ExtJS Tree刷新后自动展开并选择节点
2010-07-29 10:48 17616很久没写EXTJS的tip了... 今天帮组员写了一个 ... -
仅供纪念,曾做过的一些界面截图
2010-07-06 16:55 3366仅供记录用. 1.亚运(EXTJS) ... -
ExtJS3.x 随笔(2010-07-08更新)
2010-07-02 17:15 3514谨用该贴来记录一些使 ... -
Ext JS 3.2.0发布 -- 不少令人振奋的特性(更新翻译后的release-notes)
2010-04-01 15:02 3720不少令人振奋的新功能 1.form里面的复合组件 ---写 ... -
ExtJS EditorGridPanel中时间日期编辑问题的总结
2009-09-23 09:48 10128老是被反复问到这个问题,烦了...总结下... 1.首 ... -
Ext 3.0.1 Release Notes
2009-08-31 07:58 3916难熬的三天....JE终于恢复了.... 可惜要付费 ... -
也谈谈Ext.Grid之记录用户使用习惯—隐藏列
2009-08-27 15:58 7544在论坛看到http://www.iteye ... -
ExtJS 常见问题 - by tz
2009-08-14 16:13 0经常在群里面被问到的一些问题,不如汇集起来算了... ... -
ExtJS 3.0 优秀扩展简介 (持续更新)
2009-08-14 10:14 17170自带示例里面的扩展就 ... -
ExtJS 2.3/3.0 定制你所需要的模块
2009-08-12 13:49 13216很实在的一个需求,就是 ... -
ExtJS Combo 下拉列表正常显示HTML标签内容
2009-08-11 15:02 5855解决问题: http://www.iteye.com/pro ... -
ExtJS 3.0 Designer Preview (官方的IDE可视化工具)
2009-08-11 12:35 24631原文地址: http://extjs.com/blog/200 ... -
ExtJS Menu嵌套combo等控件时,自动隐藏/遮盖等bug的解决方案
2009-08-06 12:41 61322010-07-08补充: DateField隐藏的 ... -
ExtJS 输入框/MessageBox.prompt 禁止粘贴
2009-07-30 13:33 6731回答问题http://www.iteye.com/proble ... -
续:ExtJS Chart 扩展(重构了下,并写了个新的示例--内存监控)
2009-07-27 15:55 5887续前文:http://atian25.iteye.com/bl ... -
ExtJS Chart 扩展 - 增加对数据的过滤等操作
2009-07-24 17:41 911509.07.27 , 重构了下,详见:http://atia ...
相关推荐
Extjs3 多选下拉框LovCombo,Extjs3 多选下拉框LovCombo
extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0 extJS3.0
绝对的ExtJS3.0中文API,本人在网上找了好久才找到的,在此奉献给大家!!解压后有30多兆!!
extjs3.0框架extjs3.0框架extjs3.0框架extjs3.0框架
ExtJs+3.0+最新最全中文API帮助文档+CHM版@156_25590.exe
extjs3.0中文API,好不容易找到了,分享给大家!!extjs3.0中文API,好不容易找到了,分享给大家!!
ExtJS3.0 源码分析与开发实例宝典
ExtJS_3.0_Class Diagram
最近一个新需求,要求用下拉多选框实现省份、城市的级联选择。
Extjs3.0中文API文档 够详细 够详细 够详细
ExtJS扩展:lovcombo(已解决Bug版) 内赋详细使用说明
ExtJSAPI3.0帮助文档 Welcome to Ext JSThank you for downloading Ext JS. With a community of over one million developers and our robust family of Sencha products, Ext JS is the leader in Javascript ...
由于extjs3.0自己封装的时间不能够选择时分秒,给大家开发带来了一些麻烦。虽然网上有ext2.0的日期扩展控件,但在3.0中不能用。公司现在项目正用了,因此我就对extjs3.0时间控件的扩展,实现了可选择时分秒功能。...
ExtJs3.0API,希望对大家有所帮助
extjs3.0 ext3.0 ext文档 ext例子
在网络上搜集,自己安装成功后在使用的开发环境。因ExtJS3.0和spket-1.6.18.jar的开发包太大不能上传,里面有安装说明和下载路径 ext-jsb2.zip jsb2是最新的。。请所需者取之
1、Extjs3.0 常用组件介绍ppt 2、怎样安装开发利器Spket 3、Spket安装包
extjs3.0开发包包含api、例子、源文件等,简单易用,
EXTJS实例 EXTJS树,可以编辑的EXTJS,EXTJS3.0