在触发单击 Extjs 3.4 时重新加载 ComboBox 存储

Posted

技术标签:

【中文标题】在触发单击 Extjs 3.4 时重新加载 ComboBox 存储【英文标题】:Reload a ComboBox store on trigger click Extjs 3.4 【发布时间】:2015-05-09 12:44:56 【问题描述】:

我是js 和ExtJS 3.4 的初学者,我正在尝试在Ext.window 中使用Ext.form.ComboBox 来显示js 对象(层)的列表。

问题是当我第一次创建窗口并单击combobox 触发器时,我得到了正确的图层列表,但是当我删除或添加图层并再次单击触发器时,商店不会更新,我找到了相同的列表。

你能帮我找到解决这个问题的方法吗,例如当我点击触发器时,它会更新并加载新的列表存储?

欢迎提出任何建议。

代码片段

// The "ImageField" is an item witch is called on the return of the methode "createWindow" ...
createWindow: function() 

    ImageField = new Ext.form.ComboBox(Ext.apply(
        name: "Image_ref",
        fieldLabel: "Image Input (Required)",
        emptyText: "Select your Image",
        xtype: 'combo',
        forceSelection: true,
        editable: true,
        allowBlank: true,
        triggerAction: 'all',
        mode: 'local',
        valueField: 'value',
        displayField: 'text',
        labelWidth: 300
        width: 250,
        id: 'myCombo',
        hideLabel: false,
        lazyRender: false,
        lazyInit: false,
        mode: 'local',
        triggerAction: 'all',


        store: new Ext.data.SimpleStore(
            autoLoad: true,
            autoDestroy: true,
            fields: ['text', 'value'],
            data: layer_liste_WCS // is a liste of js objects
        ),
        listeners: 

            beforequery: function(qe) 
                // console.log(qe);
                qe.cancel = true;
                addComboxFieldItemsWCS(); // Run this methode to get "layer_liste_WCS" witch is liste of data
                var actionComboBox = Ext.getCmp('myCombo');
                .
                .
                .
                .
                .
                .
                // I don't know how to do to reload the store after runing the methode "addComboxFieldItemsWCS"
            
        

    , base));

    return new Ext.Window(
        closable: true,
        resizable: false,
        shadow: false,
        closeAction: 'hide',
        region: "center", //"north","south","east","west"
        width: 480,
        height: 190,
        iconCls: 'wind_icon',
        plain: true,
        layout: 'border',
        buttonAlign: 'right',
        layout: 'fit',
        listeners: 
            show: function() 
                this.el.setStyle('left', '');
                this.el.setStyle('top', '');
            
        ,
        items: [
            region: 'center',
            xtype: 'tabpanel',
            activeTab: 0,
            width: 50,
            height: 20,
            items: [ // we will declare 3 tabs
                title: 'Datas Inputs',
                closable: false,
                iconCls: 'input_icon',
                active: true,
                items: [
                    xtype: 'form',
                    autoWidth: true,
                    labelWidth: 185,
                    bodyStyle: "padding:10px;",
                    items: [
                        ImageField,
                    ]
                ]
            ]
        ],
    );
,

【问题讨论】:

您如何在商店中删除\添加图层?你能分享那个代码吗 听到页面:geoxxx.agrocampus-ouest.fr/mapfishapp/… 要找到窗口,请转到“工具”->“WPS Jussie”并使用右侧面板删除/添加图层。这是源代码:github.com/geosas/wpsjussie/blob/master/js/main.js 【参考方案1】:

我迟到了,但我抓住了机会。

addComboxFieldItemsWCS 中有 ajax 调用吗?

如果可以,请将此代码放在您的回调中:

Ext.getCmp('myCombo').getStore().loadData(layer_liste_WCS, false);

供您参考,false 参数是替换现有数据。

希望对您有所帮助。

【讨论】:

嗨,很抱歉迟到了!不 !我没有 Ajax 调用!存储是一个 ['text', 'value'] 的数组。你能发布一个示例代码吗?提前谢谢你!

以上是关于在触发单击 Extjs 3.4 时重新加载 ComboBox 存储的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 3.4 Grid 的存储在重新配置后未定义

Extjs 3.4 ComboBox:首次加载组合框时如何预选一条记录?

ExtJS 3.4 - 设置加载

ExtJS 数据变化事件

ExtJS 3.4 中未加载数据

存储加载后 extjs 4.0.7 中 Combobox 中的小错误