ExtJS Combo 默认值返回 null

Posted

技术标签:

【中文标题】ExtJS Combo 默认值返回 null【英文标题】:ExtJS Combo default value returned null 【发布时间】:2016-09-16 06:25:24 【问题描述】:

我在我的应用程序中设置了一个 ComboBox。 Combo 有emptyText 和我设置的默认值。

我希望保留“7AM”文本和“7”作为默认值。但是当我尝试通过选择 '7AM' 提交页面时,会返回 null 值。

// The data store containing the list of states
var states = Ext.create('Ext.data.Store', 
    fields : [
        'id',
        'text'
    ],
    data: [
        
            'id':'3',
            'text':'3AM'
        ,
        
            'id':'4',
            'text':'4AM'
        ,
        
            'id':'5',
            'text':'5AM'
        ,
        
            'id':'6',
            'text':'6AM'
        ,
        
            'id':'7',
            'text':'7AM'
        
    ]
);

// Create the combo box, attached to the states data store
Ext.create('Ext.form.ComboBox', 
    fieldLabel: 'Choose State',
    store: states,
    queryMode: 'local',
    displayField: 'text',
    valueField: 'id',
    emptyText: '7AM',
    value: '7',
    renderTo: Ext.getBody(),
    listeners: 
        'select': function(cbo)
            alert(cbo.getValue());
        
    
);

上面是测试代码,你能告诉我为什么在我选择7AM时会提示null吗?

【问题讨论】:

请您发布您如何提交组合详细信息的代码? 你可以查看上面的代码。当您选择早上 7 点时,它会提醒您为空 我已经在 ExtJS 4 中运行了这段代码,但我没有得到空值。首先 7AM 已经被选中,所以即使你选择 7AM ,它也不会触发事件。当我选择其他数字时,我得到了适当的价值。然后我再次选择 7AM,我得到 7 作为警报值。 哦。我在页面上的代码编辑器上对此进行了测试 - docs.sencha.com/extjs/4.0.7/#!/api/Ext.form.field.ComboBox 创建了一个小提琴fiddle.sencha.com/#fiddle/1gtb 【参考方案1】:
// The data store containing the list of states
var states = Ext.create('Ext.data.Store', 
    fields : ['id', 'text'],
    data: ['id':'3','text':'3AM', 'id':'4','text':'4AM', 'id':'5','text':'5AM','id':'6','text':'6AM','id':'7','text':'7AM']
);

// Create the combo box, attached to the states data store
Ext.create('Ext.form.ComboBox', 
    fieldLabel: 'Choose State',
    store: states,
    itemId: 'combo',
    queryMode: 'local',
    displayField: 'text',
    valueField: 'id',
    //emptyText: '7AM',
    //value: '7',
    renderTo: Ext.getBody(),
    listeners: 
        'select': function(cbo)
            alert(cbo.getValue());
        ,
        'afterrender': function(cbo) 
            cbo.setValue("7");
        
    
);

【讨论】:

【参考方案2】:

您的示例似乎还可以。 所以你的问题一定出在其他地方,而不是组合本身。

1- 检查您的应用程序的控制台是否没有错误。

2- 检查商店的价值时是否已加载。

3- 检查在渲染后是否没有事件改变组合值。

【讨论】:

以上是关于ExtJS Combo 默认值返回 null的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs中Combo组件默认选中

extjs组合显示值

组合加载后如何设置 extjs 组合的值?

Extjs Combo - 如何使用 GetForm().load 将值加载到组合

EXTJS GridPanel 和 Column Data 默认值

EXTJS Combo 集问题