extjs:如何在加载时设置组合框的值

时间:2011-03-22 09:30:40

标签: extjs combobox

  1. 我正在寻找 加载 监听器,当组合框启动时, 加载 将被调用并向服务器执行ajax以获取组合框的正确显示值。 但是,永远不会调用load函数..我该如何修复它?

  2. 我想在组合框之前显示文本,所以我添加了属性fieldLabel: 'Save logs to:'。但是文本没有显示出来。

  3. THX, 约尼

    this.log_save_combo = new Ext.form.ComboBox
        ({
            store: ['Device', 'USB1', 'USB2']
            , id: 'cplogs_log_save_combo'
            , name: 'cplogs_log_save_combo'
            , triggerAction:'all'
            , fieldLabel: 'Save logs to:'
            , editable: false
            //, value: "Device"
            , listeners: {
                    'load': function(){
                            alert("in load function");
                  }
        });
    

5 个答案:

答案 0 :(得分:3)

作为问题的一般解决方案,我已经

listeners:{
    scope: this,
    afterRender: this.selectFirstComboItem
}

selectFirstComboItem: function(combo) {
    // This will tell us if the combo box has loaded at least once
    if (typeof combo.getStore().lastOptions !== "undefined") {
        // Grab the first value from the store
        combo.setValue(combo.getStore().first().get(combo.valueField));
    }
    else {
        // When the store loads
        combo.getStore().on("load", function(store, items){
            // Grab the first item of the newly loaded data
            combo.setValue(items[0].get(combo.valueField));
        });
    }
}

答案 1 :(得分:1)

我想要做的一件事是在渲染组合框时选择商店的默认值。将组合框值设置为商店中的第一个值非常有用。

Ext.create('Ext.form.field.ComboBox', {
...
value : this.myStore.first().get('aFieldName')

答案 2 :(得分:0)

组合没有加载事件。因此您编写的代码没有被执行。您已经有一个使用值定义的商店..您是否尝试将新值加载到附加到组合框的商店? “combobox起来了”是什么意思?

要使用服务器中的值加载组合框,您只需加载商店。有关如何加载组合框的信息,请参阅this article

-----------------------------------------更新----- ------------------------------------

  1. 您是否尝试加载带有值的表单?在这种情况下,您可以使用BasicFrom提供的加载方法加载值。请参阅this example。即使它使用XML,您也可以轻松地更改为从JSON加载数据。

  2. 要显示标签字段,您需要将容器的布局属性设置为

    布局:'形式'

答案 3 :(得分:0)

  1. 首先加载商店store.load()
  2. 在回调中,使用setValue()
  3. 设置值

    示例:

    store.load({
            callback: function () {
                 form.findField('name_of_the_combo').setValue('your_value');
             }
        });
    

答案 4 :(得分:0)

组合没有加载事件。您可以做的是在表单加载时从商店加载组合中的数据。之后,您可以在选择组合事件上设置字段级别。

示例:

listeners:{
    select: function(){
       Ext.getCmp('id_of_the_field')
      .getEl()
      .down('label.x-form-cb-label')
      .update('Save logs to:');                             
    }
}