ExtJS EditorGridPanel和列渲染器

时间:2011-04-06 17:30:25

标签: javascript extjs editor grid

我对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.TextFieldsetValue覆盖getValue吗?我考虑过使用事件beforeeditafteredit,但这似乎有些过分。我觉得我在这里缺少一些非常简单的东西。

如果我不清楚,这里有几个我得到的结果屏幕:

列渲染器工作!
yay renderer

Ext.form.TextField获取一个对象
booo textfield

1 个答案:

答案 0 :(得分:1)

如果要更改列显示value的方式,您需要更改列渲染器和编辑器以反映这一点。这意味着,是的,你必须在编辑事件之前和之后听取并采取行动。

(如果您考虑一下,例如,我将7更改为9.系统如何知道如何处理此9,因为您的值是完全不同的格式,实际上是一个对象本身。转换的唯一方法是取9然后将其转换回你想要的任何对象,这意味着,在编辑和推送之前/之后进行侦听,从编辑器向/从备份记录中提取值。)