是我见鬼了还是extjs4.0的bug,居然遇到这么奇怪的问题,先汗下
时间:2011-09-14
来源:互联网
因代码有跟服务器交互取数据,所以,不好整理,我先说下我想实现的功能,后面看下各位能否理解,不好理解我再整理下代理贴上来吧。
我就是想用combobox实现一个简单的二级联动的下拉框功能,比如,就省份与城市,当我第一个下拉框选择一个省份时,
第二个下拉框更新其对应的城市,这个应该好理解。
我是在select事件中触发,当我选择省份时,取到其对应的省份编号,再通过省份编号用DirectStore到后台取store的值(取值完全没问题),再把store的值赋值城市对应的下拉框的store,再load下理论上就更新了城市的选择框。
思路应该没问题,其实我刚进入这个操作界面时,这个功能是正常的,但奇怪的是,只限于第一次选择,我第二次再选择省份时,这时,换了个省份,却发现,城市的下拉框不再更新了!即还是之前的那个省份对应的城市!真是太离奇了啊,代码也实在看不出问题。
后来,我又发现了一个规律,其实,如果第一次进入时操作界面时,我先去点那个城市的下拉框,随便点一下,就会造成,选择省份时,无效了!即只能城市的下拉框你选择过后,后面,选择省份就永远不能更新城市下拉框的值了。
我不知道各位高人能否看得懂我说的意思,这到底是什么原因呢?百思不得其解,有人遇到类似奇怪的问题吗?
说得有点多了,我看下,代码能不能大概整理下,贴上来吧。
我就是想用combobox实现一个简单的二级联动的下拉框功能,比如,就省份与城市,当我第一个下拉框选择一个省份时,
第二个下拉框更新其对应的城市,这个应该好理解。
我是在select事件中触发,当我选择省份时,取到其对应的省份编号,再通过省份编号用DirectStore到后台取store的值(取值完全没问题),再把store的值赋值城市对应的下拉框的store,再load下理论上就更新了城市的选择框。
思路应该没问题,其实我刚进入这个操作界面时,这个功能是正常的,但奇怪的是,只限于第一次选择,我第二次再选择省份时,这时,换了个省份,却发现,城市的下拉框不再更新了!即还是之前的那个省份对应的城市!真是太离奇了啊,代码也实在看不出问题。
后来,我又发现了一个规律,其实,如果第一次进入时操作界面时,我先去点那个城市的下拉框,随便点一下,就会造成,选择省份时,无效了!即只能城市的下拉框你选择过后,后面,选择省份就永远不能更新城市下拉框的值了。
我不知道各位高人能否看得懂我说的意思,这到底是什么原因呢?百思不得其解,有人遇到类似奇怪的问题吗?
说得有点多了,我看下,代码能不能大概整理下,贴上来吧。
作者: xzy88 发布时间: 2011-09-14
是你的问题吧。
作者: BLUE_LG 发布时间: 2011-09-14
http://lamper571.iteye.com/blog/213028用这上面的例子试试看。
作者: BLUE_LG 发布时间: 2011-09-14
引用 2 楼 blue_lg 的回复:
http://lamper571.iteye.com/blog/213028用这上面的例子试试看。
http://lamper571.iteye.com/blog/213028用这上面的例子试试看。
首先,我说下我跟他这个代码的区别,他是store是用SimpleStore,我是用DirectStore.
再一个区别是,他是ext2.0或3.0的,我用的是4.0的,下面, 我贴出主要代码吧
JScript code
defaults: {xtype: "textfield", allowBlank: true, border: false, width: 182, labelWidth: 55}, layout: "anchor", baseCls: "ex-panel", width: 217, items: [ { xtype: "combobox", fieldLabel: "省份", name: "userProvince", emptyText: "请选择省份", store: provinceStore, queryMode: "local", displayField: "provinceName", valueField: "provinceNo", triggerAction: "all", listeners: { select: function(field, value, options) { var provinceNo = value[0].raw.provinceNo; cityStore = new App.MyDirectStore(provinceNo);//App.MyDirectStore为自定义的类,这里,类似这样的做法,经验证,能取得到cityStore的值 var userCityCombo = Ext.getCmp("userCity"); userCityCombo.setRawValue(""); userCityCombo.setValue(""); userCityCombo.store = cityStore; userCityCombo.store.load(); } } }, { xtype: "combobox", fieldLabel: "城市", name: "userCity", id: "userCity", emptyText: "请选择城市", store: cityStore, queryMode: "local", displayField : "cityName", valueField: "cityNo", triggerAction: "all" } ]
这两个省份与城市,是属于form里面的两个textfield
这里,之所以觉得奇怪,是因为,只要点了城市的,就无效了,第一次先点省份时,城市有效,此时,点了下城市的,再去点省份就无效了,如果是store有问题,没取到值,那第一次,也不应该取到值啊,怪就怪在这里
作者: xzy88 发布时间: 2011-09-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28