如果我有一个JSON返回一个属性的空值,我如何强制网格识别值已经从null更改并将其标记为isDirty?ExtJS空值的JSON记录
{
"prop1": null,
"prop2": "",
"prop3": "my val"
}
第一次用户编辑在Ext.grid.EditorGridPanel的PROP1细胞它未标记为脏,但是只要它被编辑的第二时间,它是。空字符串在第一次编辑时正常工作。
在进一步调试似乎使用record.set()其中一个JSON属性来设置数据备案
set : function(name, value){
var encode = Ext.isPrimitive(value) ? String : Ext.encode;
if(encode(this.data[name]) == encode(value)) {
return; //if null it always returns here
}
更新之前有一个空值返回:
的解决方法是设置记录的数据属性的原始值:
data = segments[i]; //my JSON
recMetadata = Ext.data.Record.create(store.fields.items);
r = new recMetadata({}, data.MyID); //blank record with ID
for (j in data) {
//r.set(j, data[j]); //does not set the data property if null
r.data[j] = data[j]; //set raw value and all is fine with isDirty etc.
}
store.insert(0, r);
使用非常好的工作(添加网格视图的刷新以显示修改后的记录)。我发现了一种解决记录对象中缺少字段的潜在问题的方法。 – geographika 2011-03-10 15:04:56