Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS EditorGridPanel和列渲染器_Javascript_Extjs_Editor_Grid - Fatal编程技术网

Javascript ExtJS EditorGridPanel和列渲染器

Javascript ExtJS EditorGridPanel和列渲染器,javascript,extjs,editor,grid,Javascript,Extjs,Editor,Grid,我对以下的文档有点困惑: 对的值执行编辑 由列的 备份存储中的数据索引(如果 您正在使用渲染器来 显示转换后的数据,这必须是 说明) 我不确定在以下情况下如何“解释”渲染器: ... columns : [{ header : 'Foo', width : 100, dataIndex: 'foo', renderer: function(value, p,

我对以下的文档有点困惑:

对的值执行编辑 由列的 备份存储中的数据索引(如果 您正在使用渲染器来 显示转换后的数据,这必须是 说明)

我不确定在以下情况下如何“解释”渲染器:

...

columns : [{
                header   : 'Foo',
                width    : 100,
                dataIndex: 'foo',
                renderer: function(value, p, record) {return value? value.bar: ""},  
                editor : new Ext.form.TextField({  
                    allowBlank : false  
                })
            }]
...
正如您所看到的,这个渲染器非常简单,但它显然不适用于文本字段。我理解为什么在用户编辑时它只显示我的foo对象而不显示bar属性

那么,我们该如何解决这个问题呢?我是否应该用新的
setValue
getValue
覆盖
Ext.form.TextField
?我曾考虑过在编辑前使用事件
和编辑后使用事件
,但这似乎有些过头了。我觉得我错过了一些很简单的东西

如果我不清楚,下面是我得到的结果的几个屏幕:

列渲染器工作正常

Ext.form.TextField获取对象

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


(例如,如果你想一想,我会将7改为9。由于你的值是一种完全不同的格式,实际上是一个单独的对象,系统如何知道如何处理9。转换的唯一方法是将9转换回你想要的任何对象,这意味着,在编辑之前/之后进行监听并按下,然后拉拽val从编辑器到/从备份记录使用。)

这对我来说很有意义。我想我不确定在事件前后应该更改什么。我如何访问编辑器?我有“event.grid”和“event.record”,所以我猜它在网格中的某个地方:)。似乎应该有更简单的方法来做到这一点,因为我的数据转换非常简单。我认为这是正确的,但老实说,我不认为这是一个好方法。我重写了startEditing方法,然后在afteredit事件中重新修改。那太草率了。我猜真正的方法是编写Ext.form.Field的扩展,该扩展可以正确显示对象,并允许正确编辑。问题是,显示部分不是由form.Field完成的。它由grid.Column完成。因此,我同意需要有更好的方法(4.0中有吗?),但我今天不知道还有比在编辑前/编辑后收听更好的方法(一旦你有了before/after编辑逻辑,如果你认为需要重新使用它,你可以把这个内联的或扩展的form.Field放进去。+1对于你的问题,谢谢你的帮助。我希望ExtJS 4能给我们提供一个更简单的方法。我也看到了你所说的关于如何在字段中处理显示的内容。对于网格来说,这是一个多么奇怪的地方啊t、 我想这是很平常的事。干杯,伙计!