【问题标题】:How to update a Ext.form.ComboBox store (simple store) once created in a Ext.window (Extjs)在 Ext.window (Extjs) 中创建后如何更新 Ext.form.ComboBox 存储(简单存储)
【发布时间】:2015-07-12 22:42:34
【问题描述】:

我尝试在煎茶表格上找到我的案例的解决方案,但没有成功:(

我是 js 和 Extjs 3.4 的初学者,我正在尝试在 Ext.window 中使用 Ext.form.ComboBox 来显示 js 对象(层)的列表。问题是当我第一次创建窗口并单击组合框触发器时,我得到了正确的图层列表,但是当我删除或添加图层时,我再次单击触发器,商店不更新,我发现相同的列表:(((

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

提前谢谢你!

这里是部分代码:

createWindow: function() {
        var FIELD_WIDTH = 250,
            base = {
                forceSelection: true,
                editable: true,
                allowBlank: true,
                triggerAction: 'all',
                mode: 'local',
                labelSeparator: OpenLayers.i18n("labelSeparator"),
                valueField: 'value',
                displayField: 'text',
                labelWidth: 300
        };

        var addComboxFieldItemsWCS = function()  {
            layer_liste_WCS = [];
            var empty = true ;
            layerStore.each (function (record) {
                var layer = record.get('layer');
                var queryable = record.get('queryable');
                // var type = record.get('type');
                var hasEquivalentWCS = record.hasEquivalentWCS()
                if (queryable && hasEquivalentWCS) {
                    empty = false;

                    var ObjectRecordType = Ext.data.Record.create(['text', 'value']);
                    var rec = new ObjectRecordType({ text: layer.name, value:record })

                    console.log(rec.data.value)

                    var liste = [rec.data.text, rec.data.value];
                    layer_liste_WCS.push(liste)
                }
            }) ;
            if (empty)  {
                var ObjectRecordType = Ext.data.Record.create(['text', 'value']);
                var rec = new ObjectRecordType({ text: "No based WCS layer !", value:"" })

                var liste = [rec.data.text, rec.data.value];
                layer_liste_WCS.push(liste)
                disabled: true

            }
        };
        addComboxFieldItemsWCS();

        var WCS_store = new Ext.data.SimpleStore({
                        autoLoad: true,
                        fields: ['text','value'],
                        data: layer_liste_WCS
                        });

        ImageField = new Ext.form.ComboBox(Ext.apply({
            name: "Image_ref",
            fieldLabel: OpenLayers.i18n("Spot Image Input (Required)"),
            // fieldLabel: WPS_config.img.title, // From WPS Server
            emptyText: OpenLayers.i18n("Select your Image"),
            autoDestroy: true,
            width: FIELD_WIDTH,
            triggerAction: 'all',
            queryMode: 'local',
            store: WCS_store,
        }, base));

        return new Ext.Window({
            title: OpenLayers.i18n("addon_wpsjussie_title"),
            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: OpenLayers.i18n('Datas Inputs'),
                    closable:false,
                    iconCls: 'input_icon',
                    active: true,
                    items:[{
                        xtype: 'form',
                        autoWidth: true,
                        labelWidth: 185,
                        bodyStyle: "padding:10px;",
                        items: [
                            ImageField,
                        ]                        
                    }]
                }]    
            }],                      
        });
    },

【问题讨论】:

    标签: javascript extjs combobox store extjs3


    【解决方案1】:

    首先您需要设置一个“点击”监听器。 每次执行时,您都必须重新加载商店'WCS_store':

    WCS_store.load({ params: { param_1: value_1, param_2: value_2, etc...} });

    让我知道它是否有效。

    【讨论】:

    • 嗨,Nicola,你能给我一个“点击”监听器的代码预览吗?调用“addComboxFieldItemsWCS”函数重新加载WCS_store是否足够?
    【解决方案2】:

    这是解决方案!

    store: myArrayStore,
               listeners:
               {
                   beforequery:function() {
                       addComboboxItemsWFS();
                       this.store.clearData();
                       this.store.loadData(my_data);
                    }
               }
    

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 2015-03-21
      • 2016-05-12
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多