2011-05-20 73 views
2

我无法在ExtJS中获取组合框来显示下拉项目。我最初使用XmlStore来动态加载数据,但为了确保这不是问题,我使用了一个现有的ComboBox,它使用了一个简单的ArrayStore(并且目前在我的应用程序中工作),以查看它是否工作,仍然没有运气。ExtJS组合框不显示元素

当使用Chrome的开发者工具,当我点击组合框元素,我得到ext-all-debug.js:41166 - Uncaught TypeError: Cannot call method 'getStyle' of undefined和什么也不显示的下拉菜单。

这里是我的代码:

EventForm = Ext.extend(Ext.form.FormPanel, { 
    constructor: function(config) { 
     config = Ext.apply({ 
      items: [ 
       { 
        layout: 'column', 
        xtype: 'container', 
        items: [ 
         { 
          layout: 'form', 
          xtype: 'container', 
          columnWidth: 0.5, 
          items: [ 
           { 
            fieldLabel: 'My Combo Box' 
            name: 'mycombobox', 
            xtype: 'combo', 
            store: new Ext.data.ArrayStore({ 
             fields: ['size'], 
             data: [ 
              ['50'], 
              ['100'], 
              ['150'], 
              ['200'] 
             ] 
            }), 
            displayField: 'size', 
            valueField: 'size', 
            forceSelection: true, 
            editable: false, 
            triggerAction: 'all', 
            mode: 'local', 
            listWidth: 60, 
            width: 60 
           } 
          ] 
         }, { 
          // another column here similar to above 
         } 
        ] 
       } 
      ] 
     }, config); 

     EventForm.superclass.constructor(config); 
    } 
}); 

回答

6

你是不是正确调用EventForm的超类的构造函数。更改您的构造函数的最后一行为:

EventForm.superclass.constructor.call(this, config); 
+1

*刘海头靠在办公桌* - 谢谢你注意到我的愚蠢的错误:) – Jared 2011-05-23 18:12:36

1

data数组必须包含对象的列表,并且您可以通过fields提供的密钥必须是你的数据是指那些对象的键。您data阵列正确的语法是:

data: [ 
    {'size':'50'}, 
    {'size':'100'}, 
    {'size':'150'}, 
    {'size':'200'} 
] 

(可能是因为我没有机会,现在验证)

+0

我列出的ComboBox代码实际上是从我的应用程序的另一部分,工作没有问题。最后,我将使用一个XmlStore,但我想,以消除可与远程加载的东西出现的错误,我会使用现有的组合框,在我的应用程序的另一部分工作。 – Jared 2011-05-20 14:49:55

+0

所有键相同的“大小”不会肯定工作...而{为对象符号,数组是[] ...数组存储大约需要这种格式:数据:[[“50”,“50”], [“100”,“100”]] – 2015-04-21 14:53:17