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

Posted

技术标签:

【中文标题】extjs:加载时如何设置组合框的值【英文标题】:extjs: How to l set value for combobox when loading 【发布时间】:2011-03-22 09:30:40 【问题描述】:

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

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

谢谢, 女阴

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");
              
    );

【问题讨论】:

【参考方案1】:

作为问题的一般解决方案,我选择了

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));
        );
    

【讨论】:

afterRender 是我需要的。非常感谢!【参考方案2】:

我想做的一件事是在呈现组合框时从商店中选择一个默认值。将组合框值设置为商店中的第一个值效果很好。

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

【讨论】:

【参考方案3】:

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

要从服务器加载带有值的组合框,您只需要加载存储。如何加载组合框请参考this article。

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

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

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

    布局:'表格'

【讨论】:

嗨,我正在数据库中保存选定的组合框值。所以我想在带有组合框的页面启动时显示 ist。我会检查你提到的文章,Thx 示例链接已损坏dev.sencha.com/deploy/dev/examples/form/xml-form.js【参考方案4】:
    首先使用store.load()加载商店 在回调中使用setValue() 设置值

示例:

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

【讨论】:

【参考方案5】:

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

示例:

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

【讨论】:

以上是关于extjs:加载时如何设置组合框的值的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJS 中获取组合框的值

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

如何让组合框选择与 ExtJS6 中显示的值不同的值?

ExtJS 组合框不呈现

ExtJS组合框无法渲染

ExtJS 4 - 当列编辑器是组合框时如何避免网格列值变为空?