【问题标题】:How to change combobox store data in ExtJS 4.1如何在 ExtJS 4.1 中更改组合框存储数据
【发布时间】:2012-07-18 16:49:04
【问题描述】:

我定义了一个这样的组合框

{ xtype: '组合框', emptyText: '函数' 商店:['无'] }

然后,在某些情况下,商店应该加载新数据,所以我从组合框中获取商店并尝试以下操作:

oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ] );

但在此之后,组合框有一个没有任何可见内容的下拉菜单,只有很小的空白行。

【问题讨论】:

    标签: extjs extjs4.1


    【解决方案1】:
    // Change this...
    oFunctionStore.loadData( ['dothis', 'dothat', 'dosomething' ] );
    
    // to this...
    oFunctionStore.loadData( [ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ] );
    
    • 组合框隐式创建一个Ext.data.ArrayStore,它将数组转换为模型。

    • data 参数传递给 loadData 应该是一个模型数组,或者一个 可以转换为模型的对象数组(在这种情况下, 数组)。

    • 在初始存储加载时,原始数组在后台转换为 [ [ 'none' ] ]

    查看示例here

    【讨论】:

      【解决方案2】:

      carStore - 主要组合的任何商店。

      carModelStore - 商店,应该取决于在基于 carStore 的组合框中的选择

      var carModelStore = new Ext.data.Store({
          reader: new Ext.data.JsonReader({
              fields: ['id', 'car-model'],
              root: 'rows'
          }),
          storeId: 'car-model-store',
          proxy: new Ext.data.HttpProxy({
              url: 'carmodeldataprovider.json?car-name=lamborghini'
          }),
          autoLoad: true
      });
      
      
      { xtype: 'combo', name: 'car-name', fieldLabel: 'Car', mode: 'local', store: carStore, triggerAction: 'all',
          listeners: {
              select: function(combo, records, eOpts){
                  var carName = records.get('car-name');  // the element selected in combo
                  var carModelStore = Ext.StoreMgr.lookup("car-model-store");
      
                  carModelStore.proxy.setUrl('carmodeldataprovider.json?car-name=' + carName, false);
                  carModelStore.reload();
              }
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 2013-01-11
        相关资源
        最近更新 更多