[size=xx-large]
由于工作需要, 最近开始学习使用extjs框架。花了一个多星期将近两个星期的时间熟悉了一下这个东东,然后就开始干活了。
刚开始用,吃了很多没经验的亏, 比如, 一开始没有用函数封装生成面板的代码, 导致面板只能打开一次, 第二次就打不开了。调试,思考, 然后觉得可能是panel关闭后就被销毁的原因,然后看了一些资料, 也的确如此。还有表单面板的布局等各种问题, 让我花了大量的时间在调试上。在遇到的问题中, 最让人抓狂的是combobox。
在使用combobox的过程中遇到两个问题:一、提交表单时, combobox传到服务器的值不是期望的valuefield属性,而是displayfield,或者传去一个字符串数组;二,调用它的setValue(val)函数将它初始化时,显示值不是val对应的displayfield, 而是直接将val显示出来。
刚发现这两个bug时,我一个劲的去检查它的name、id、displayfield、valuefield等属性有没有写错, 结果呢,没结果。被逼无奈,向度娘求助,找到的解决办法是将name属性删除, 添加一个hiddenName属性。于是就这样改了, 还真有效果。API上说hiddenName这个属性可以自动创建一个以hiddenName属性值为name的隐藏表单域。 其实, 我最先想到的解决办法也是添加一个 hidden表单域, 在表单提交前将combo的值手动赋给它。combo组件少的时候这样做也行。
第二个问题,我想应该是出在setValue()和load的时间先后上:要等到load完成后再setValue(val)才会显示相应的displayfiled。所以我将原来的代码:
store.proxy=new Ext.data.HttpProxy({url:"..."});
store.load();
form.findField("cmbxxx").setValue(val);
改为
store.proxy=new Ext.data.HttpProxy({url:"..."});
store.on("load", function(){
form.findField("cmbxxx").setValue(val)
});
若在运行的过程中store的proxy属性不变,可正常运行;若store的proxy属性会发生变化,就会报错,我也不知道原因, firefox报出的错误是form.findField("cmbxxx") is null。
再次被向度娘求助,将代码改为:
store.proxy=new Ext.data.HttpProxy({url:"..."});
store.load({
callback:function(){
form.findField("cmbxxx").setValue(val);
}
});
很神奇地对了。我觉得好没理由,因为这两段代码在理论上的效果都是load完以后执行function里的form.findField().setValue(), 为什么前者就不对呢。顺便用一个简单的场景补充下业务背景:学生信息表中有专业和班级属性;通过学生列表可以对每条记录进行修改操作 ;专业和班级的选择是二级联动的combobox:选择专业后加载班级;第二个问题就出在班级信息下拉列表显示值的初始化上。
[/size]
分享到:
相关推荐
extjs editgrid combobox 回显extjs editgrid combobox 回显extjs editgrid combobox 回显extjs editgrid combobox 回显
EXTJS的COMBOBOX级联实现和数据提交VALUE[文].pdf
extJs4 ComboBox 代码组合框实例,ComboBox 各个主要参数详细解释
extjs4 ComboBox 点击下拉框 出现grid效果 这里只实现了点击下拉框显示gird,点击其他地方grid自动消失
extjs 自动补全,模拟下拉列表combobox
NULL 博文链接:https://wwwzhouhui.iteye.com/blog/701745
代码看起来简洁又漂亮是如何做到的,这篇文章主要为大家详细介绍了Extjs如何让combobox写起来更简单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
该资源主要展示了在Extjs6中Combobox控件实现下拉选择多个数据的功能
extjs的combobox功能很强大,通过它可以模糊查询,只要添加几个属性即可,网上找的代码有的不符合我的要求。 所以自己改了一些代码。
NULL 博文链接:https://dengli19881102.iteye.com/blog/1046190
很多网友在问,Extjs4.0 ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果。其中注意的一点就是,3.x中的model:’local’在Extjs4.0中用queryMode: ‘local’来表示,而且在...
当需要为ComboBox加载数据后进行赋初始选中项的话,如果是写在store.load()之后
课程简介: ExtJS是一种主要用于创建前端...第十八讲.ExtJS之ComboBox获取远程数据、网页计算器 第十九讲.ExtJS之组件面向对象编程(一) 第二十讲.ExtJS之组件面向对象编程(二) 项目实战Extjs版在线选课系统:
基于Ext3.4的一个扩展Combobox组件
使用combobox时,它有一个hiddenName的属性,专门用于提交combobox中value的值,接下来介绍extjs3 combobox如何取value和text值,感兴趣的朋友可以不要错过了啊
为了解决这个问题需要在EditorGridPanel的ColumnModel中显示ComboBox的地方使用renderer属性,重新渲染,方法如下: 代码如下: //部门列表 var comboxDepartmentStore = new Ext.data.Store({ proxy: new Ext.data....
Combobox二级联动列子 Combobox二级联动列子 Combobox二级联动列子 Combobox二级联动列子 Combobox二级联动列子 Combobox二级联动列子