对深入浅出提供表格验证方法出现的bug进行改进。
//验证表格数据是否合法 思路:检查modified中每个record 根据每个属性的editor对record中的属性进行验证。
var records = store.getModifiedRecords();
if(records.length<1){
return ;
}
for(var j=0;j<records.length;j++){
var record = records[j];//得到一个record
var fields = record.fields.keys;//fields里面是record的属性数组
for(var i = 0 ;i<fields.length;i++){/ /检测record的每个字段值是否合法 //根据fields里面的属性 检测每一个record
var name = fields[i];
var value = record.data[name];//根据record得到属性值
var cm = grid.getColumnModel();
var colIndex = cm.findColumnIndex(name);//根据名称找到它在grid所在的列
if(colIndex == -1)continue;//如果不在grid列里面进行下一次循环
var rowIndex = store.indexOfId(record.id);//得到当前验证属性的行
if(null!=cm.getCellEditor(colIndex)){
cm.getCellEditor(colIndex).field.reset();//因为field中还保存着数据 只是没有显示出来,
//当验证record的时候field会把record中属性的空值替换成field的值 那么allowblank=false验证失败
var editor = cm.getCellEditor(colIndex).field;//得到每一个editor的Ext.form.field对象。利用field进行验证
if(!editor.validateValue(value)){
Ext.Msg.alert("提示","数据不完整",function(){
grid.startEditing(rowIndex,colIndex);
});
return false;
}
}
}
}
深入浅出提供表格验证方法出现的bug:(它的方法就不贴出来了)
cm.getCellEditor(colIndex).field.reset();//
cm.getCellEditor(colIndex).field.reset();//