我对EditorGrid的以下文档感到有点困惑:
对值进行编辑 列的指定字段 后备存储中的dataIndex(如果 你正在使用渲染器 显示转换后的数据,这必须是 占了)。
在以下情况下,我不确定如何“解释”我的渲染器:
...
columns : [{
header : 'Foo',
width : 100,
dataIndex: 'foo',
renderer: function(value, p, record) {return value? value.bar: ""},
editor : new Ext.form.TextField({
allowBlank : false
})
}]
...
正如您所看到的,此渲染器非常简单,但显然无法使用TextField。我理解为什么它只会在用户编辑时显示我的foo对象而不是bar属性。
那么如何解决这个问题呢?我应该使用新的Ext.form.TextField
和setValue
覆盖getValue
吗?我考虑过使用事件beforeedit
和afteredit
,但这似乎有些过分。我觉得我在这里缺少一些非常简单的东西。
如果我不清楚,这里有几个我得到的结果屏幕:
列渲染器工作!
Ext.form.TextField获取一个对象
答案 0 :(得分:1)
如果要更改列显示value
的方式,您需要更改列渲染器和编辑器以反映这一点。这意味着,是的,你必须在编辑事件之前和之后听取并采取行动。
(如果您考虑一下,例如,我将7更改为9.系统如何知道如何处理此9,因为您的值是完全不同的格式,实际上是一个对象本身。转换的唯一方法是取9然后将其转换回你想要的任何对象,这意味着,在编辑和推送之前/之后进行侦听,从编辑器向/从备份记录中提取值。)