15

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

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

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

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

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

4

2 回答 2

17
// Change this...
oFunctionStore.loadData( ['dothis', 'dothat', 'dosomething' ] );

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

  • data传递给 的参数loadData应该是模型数组,或者是可以转换为模型的对象数组(在本例中为数组数组)。

  • 在初始存储加载时,原始数组被转换到[ [ 'none' ] ]幕后。

在此处查看示例

于 2012-07-19T23:40:58.930 回答
1

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-01-05T21:03:23.207 回答