2015-03-13 42 views
1

我创建了comboBox,当我选择一个值时,将不会显示任何值。Extjs5:组合框未显示选定的值

Ext.create("Ext.form.field.ComboBox", { 
     name: el.name, 
     fieldLabel: el.labelId, 
     hidden: !(el.visible), 
     displayField:"value", 
     valueField:"value", 
     flex: 1, 
     store:Ext.create("Ext.data.Store",{ 
       fields: ['key', 'value'], 
       data: [ 
         { key: "10",value: "etap 0"}, 
         { key: "200",value: "etape 1"}, 
         { key: "300", value: "etape 3"} 
       ] 
     }), 
     regex: el.parameterType.regex, 
     regexText: el.regExErrMsg, 
     allowBlank: !el.mandatory, 
     blankText: el.requiredErrMsg 
    }) 

EDIT

这里正是返回组合的方法:

drawField: function (el) { 
    var me = this; 
    var uiField = Ext.create(me.componentType, { 
     name: el.name, 
     fieldLabel: el.labelId, 
     hidden: !(el.visible), 
     flex: 1, 
     regex: el.parameterType.regex, 
     regexText: el.regExErrMsg, 
     allowBlank: !el.mandatory, 
     blankText: el.requiredErrMsg 
    }); 
    if (el.parameterType.isCombo) { 
     uiField.displayField = 'value'; 
     uiField.valueField = 'key'; 
     uiField.editable = false; 
     uiField.store = Ext.create('Ext.data.Store', { 
      fields: ['key', 'value'], 
      data: el.parameterType.values 
     }); 
    } 
    return uiField; 
} 

el参数是JavaScript对象像:

{ 
    name: "", 
    labelId: "Champ :", 
    parameterType: { 
     regEx: "^.*$", 
     errID: "115", 
     isCombo: true, 
     values:[ 
      {key: "10", value: "etap 0"}, 
      {key: "200",value: "etape 1"}, 
      {key: "300",value: "etape 3"}, 
     ], 
     selectedValue: "etap 0" 
    }, 
    mandatory: false, 
    visible: true, 
    defaultValue: "", 
    elementType: "LIST_BOX", 
    regExErrMsg: "Valeur invalide.", 
    requiredErrMsg: "" 
} 

me.componentType在侏儒IME是Ext.form.field.ComboBox

+0

你是如何选择的价值? – includeMe 2015-03-13 10:11:32

+0

我手动选择了该值 – 2015-03-13 10:27:01

+0

如何手动选择该值? – phts 2015-03-13 11:46:56

回答

2

这拨弄正常工作对我来说,我除去EL引用内容表明,它未定义我也改变Ext.data.store到Ext.data.Store

https://fiddle.sencha.com/#fiddle/jj6

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     Ext.create("Ext.form.field.ComboBox", { 
      renderTo: Ext.getBody(), 
      displayField: "value", 
      valueField: "value", 
      flex: 1, 
      store: Ext.create("Ext.data.Store", { 
       fields: ['key', 'value'], 
       data: [{ 
        key: "10", 
        value: "etap 0" 
       }, { 
        key: "200", 
        value: "etape 1" 
       }, { 
        key: "300", 
        value: "etape 3" 
       }] 
      }) 
     }); 
    } 
}); 
+0

这对我来说并不是相同的情况:( – 2015-03-13 13:26:55

+0

你可以用你的代码创建一个小提琴,这样我们可以调试它,你是否获得控制台错误? – Scriptable 2015-03-13 13:27:50

+0

我编辑了我的问题 – 2015-03-13 13:52:14

0

valueField:“值”是不对的,你应该指定valueField:以“重点”为组合框正常工作

+0

感谢您的回应,但我不认为这是问题的原因。我试了一下,但问题仍然存在 – 2015-03-13 12:54:14

+0

它几乎检查与您的代码相同的一段代码http://docs-origin.sencha.com/extjs/5.0.1/#!/api/Ext.form.field.ComboBox -cfg-valueField。 ComboBox应该使用数据存储中的ID存储值而不是项目的标题 – snautz 2015-03-13 12:56:39