Javascript 具有多个xtypes的ExtJS 5网格小部件列

Javascript 具有多个xtypes的ExtJS 5网格小部件列,javascript,extjs,extjs5,Javascript,Extjs,Extjs5,我有这样一个数据对象: data = [ {text: 'What is your name?', xtype: 'textfield'}, {text: 'What is your favorite number?', xtype: 'numberfield'} ] 我需要一个网格来显示各自行中的每个数据对象。该行应包含所提供xtype的表单字段 使用以下插件在ExtJS 4中实现这一点很容易: 有了这个插件,开发人员只需在列config上指定一个“renderer”函数,该

我有这样一个数据对象:

data = [
    {text: 'What is your name?', xtype: 'textfield'},
    {text: 'What is your favorite number?', xtype: 'numberfield'}
]
我需要一个网格来显示各自行中的每个数据对象。该行应包含所提供xtype的表单字段

使用以下插件在ExtJS 4中实现这一点很容易:

有了这个插件,开发人员只需在列config上指定一个“renderer”函数,该函数为任意组件返回一个config对象,然后该组件将在单元格中呈现。不幸的是,这个插件不适用于ExtJS5

ExtJS 5似乎承诺通过其新的“Widget Column”功能修复对该插件的需求,因此我急切地等待它的发布,但当它最终面世时,它没有达到宣传的效果。它似乎要求每一行都有相同的精确组件,只有值不同。小部件列的一行似乎没有办法有一个textfield,而下一行有一个numberfield


我的结论是否正确,即新的ExtJS 5“Widget Column”功能太有限,无法用于我的用例?

我的一个项目也有同样的问题。不幸的是,渲染器还不是widgetcolumns的选项。据说Extjs 5.0.1即将发布,他们声称这将修复Extjs 5中存在的许多bug,所以我希望这会包含在修复中。在此之前,我建议使用您引用的组件列插件。只要替换

return this.lastFrameWidth = parentDiv.getFrameWidth('lr') + parentTd.getFrameWidth('lr');

渲染器的参数之一是组件在
渲染时存在的位置的记录和行号
,可以保存在自定义属性中,以便在以后的事件(如
更改
)中使用

return this.lastFrameWidth = parentDiv.getBorderWidth('lr') + parentDiv.getPadding('lr') + parentTd.getBorderWidth('lr') + parentTd.getPadding('lr');