Ext.form.BasicForm的getValues()和getFieldValues()辨析
来源:互联网 发布:人工智能 配方 编辑:程序博客网 时间:2024/05/22 00:42
环境:Extjs3.3
getValues————Returns the fields in this form as an object with key/value pairs as they would be submitted using a standard form submit.
getFieldValues————Retrieves the fields in the form as a set of key/value pairs, using the getValue() method.
示例:
若表单中存在combo表单项,displayField和valueField是不同值。
用getValues得到的是displayValue
用getFieldValues得到的是valueField
注意:
1、getFieldValues(true)标示只得到脏数据(变动过的数据)
2、getFieldValues不会得到处于disable状态的表单项值。
若需要disable状态的表单项值可以做如下修改:
Ext.override(
Ext.form.BasicForm,
{
getFieldValues : function(dirtyOnly){
var o = {},
n,
key,
val;
this.items.each(function(f) {
if (dirtyOnly !== true || f.isDirty()) {
n = f.getName();
key = o[n];
val = f.getValue();
if(Ext.isDefined(key)){
if(Ext.isArray(key)){
o[n].push(val);
}else{
o[n] = [key, val];
}
}else{
o[n] = val;
}
}
});
return o;
}
}
)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/horizon_cbl/archive/2011/01/11/6128762.aspx
但是经过测试发现,并非如上文所讲的,
若表单中存在combo表单项,displayField和valueField是不同值。
用getValues得到的是displayValue
用getFieldValues得到的是valueField
其实对于combo他们获取到的值都是valueField。主要区别在于getValues可以获取如radio,check这种含有多个name属性值相同的元素,而getFieldValues不可以。所以如果页面还有radio这种组件则getFieldValues是无法获取到name属性,解决radio后台传参问题,可用以下方法:
方式一:直接通过form提交的方式
方式二:通过ajax方式
方法一,用getValues()获取
方法二,修改getFieldValues定义。
Ext.form.BasicForm.prototype.getFieldValues = function(dirtyOnly)
{
var o = {}, n, key, val;
this.items.each(function(f)
{
if(f.disabled || (dirtyOnly && f.isDirty()))
{
return;
}
n = f.getName();
key = o[n];
val = f.getValue();
if(Util.isFunction(val.render))
{
n = val.getName();
val = val.getValue();
}
if(Ext.isDefined(key))
{
if(Ext.isArray(key))
{
o[n].push(val);
}
else
{
o[n] = [key, val];
}
}
else
{
o[n] = val;
}
});
return o;
};
上面这段代码是我同事写的,不过在form表单里是tabpanel面板的时候,发现当在含有表单组件的某个面板没打开显示出现之前就提交则其会报val是undefined.
不知tabpanel有没有哪个配置属性是可以解决这个问题的,目前我用的方法是 if(Util.isFunction(val.render))添加一个判断,修改为 if(Ext.isDefined(val) && Util.isFunction(val.render))
下次找到更好的办法再来叙说,也欢迎知道的朋友们在评论中给出答案。
- Ext.form.BasicForm getValues()和getFieldValues()辨析
- Ext.form.BasicForm的getValues()和getFieldValues()辨析
- extjs4 form getFieldValues 和 getValues 的区别
- Ext.form.BasicForm
- Ext.widgets-form(上)BasicForm/Field/Checkbox/Radio/HtmlEditor/TextField
- Ext.widgets-form(上)BasicForm/Field/Checkbox/Radio/HtmlEditor/TextField
- Ext.widgets-form(上)BasicForm/Field/Checkbox/Radio/HtmlEditor/TextField
- Ext.widgets-form(上)BasicForm/ Field/ Checkbox/ Radio/ HtmlEditor/ TextField
- Extjs:getValue()、getRawValue()、getValues()、getFieldValues()区别
- Request.Form.GetValues
- Ext Store和form超时的解决方法
- Ext.form.CheckboxGroup和Ext.form.RadioGroup
- Ext_基本表单_Ext.form.BasicForm
- Ext.form.CheckboxGroup和Ext.form.RadioGroup RadioGroup的获取值和赋值
- ext的form提交
- Ext.form.ComboBox 本地和远程模式的基本定义
- Ext form 里最常用的一些方法和注释
- Ext.form.HtmlEditor获取和清空数据的方法
- 关于 TCP 并发连接的几个思考题与试验
- C# 操作Word知识汇总 二
- sqlserver 获取当前时间 格式转换
- ContentResolver使用方法
- 穷举数据
- Ext.form.BasicForm的getValues()和getFieldValues()辨析
- android杂项
- Ubuntu下ftp服务器配置方法
- 【转】Java抽象类与接口
- -
- Flex双轴标注混合动态图表开发
- sql语句查询结果合并union 和union all用法
- 见或不见
- No. 1