关于编辑器TextField保存空值到数据库变“undefined”字符串

var cm = new Ext.grid.ColumnModel([
{
id:'simplename',
header: "简称",
dataIndex: 'dddd',
width: 100,
sortable : true,

editor: new Ext.form.TextField({
 allowBlank: true
})
}

]);
大概有这样一个模型,可以添加行,然后点击它可以编辑,但是我保存空值的时候它自动保存了“undefined”这个字符串到数据库了,TextField的value属性默认值是"undefined",但我加了value:""也不行,还是保存了那个字符串,求解啊????

首先需要明确自动保存都传入了什么数据到服务器端!我觉得你应该把这个险找出来,也就是你说的自动保存的时候你修改的字段向服务器请求的数据是什么!?只有知道了这个环节的数据才能知道问题出在哪!?一般在处理编辑保存的时候代码段如下:

listeners:{
afteredit:function(e){
var connection=new Ext.data.Connection();
connection.request({
url:"update",
params:{
action:"update",
id:e.record.id,
field:e.field,
value:e.value
},
success:function(response,options){
e.commit();//进行更新
}
});
}
}
即时自动更新,这个代码段中params也会制定对应的字段,比如action--更新动作,id--更新记录Id,field--更新的字段名,value--对应field更新字段的值。
这样子通过IE或者Firebug都可以监控到发送到服务器端的值,也可以在服务器端进行判断。

由于工作中未出现过你说的问题,所以建议你可以以上面的方式来排错。

你是如何获取value值的,如果你是用textField.value来获取,获取到得就是undefined,如果用getValue()方法来获取,获取到得就是“”,其实也可以自己判断一下,他这方法里边也是先进行了判断的

做个校验 比较的妥当

你提交数据后 在火狐的控制台下看看一下发送的数据 确定你发送的数据是没有问题的 如果你发送的就是undefined 存入的肯定是undefined

[code="java"]
var store = new Ext.data.SimpleStore({
fields : [{
name : 'departmentNo'
}, {
name : 'departmentName'
}, {
name : 'departmentNa'
}, {
name : 'departmentType'
}, {
name : 'parentNo'
}, {
name : 'accountNo'
}, {
name : 'bankAccountNo'
}, {
name : 'tel'
}, {
name : 'fax'
}, {
name : 'address'
}]
});

var rowCount = store.getCount();// 记录数
var record = store.getAt(i);//i是行数
var recordValue = record.get('departmentName');//

[/code]