【发布时间】:2012-07-18 16:49:04
【问题描述】:
我定义了一个这样的组合框
{ xtype: '组合框', emptyText: '函数' 商店:['无'] }然后,在某些情况下,商店应该加载新数据,所以我从组合框中获取商店并尝试以下操作:
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ] );但在此之后,组合框有一个没有任何可见内容的下拉菜单,只有很小的空白行。
【问题讨论】:
我定义了一个这样的组合框
{ xtype: '组合框', emptyText: '函数' 商店:['无'] }然后,在某些情况下,商店应该加载新数据,所以我从组合框中获取商店并尝试以下操作:
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ] );但在此之后,组合框有一个没有任何可见内容的下拉菜单,只有很小的空白行。
【问题讨论】:
// Change this...
oFunctionStore.loadData( ['dothis', 'dothat', 'dosomething' ] );
// to this...
oFunctionStore.loadData( [ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ] );
组合框隐式创建一个Ext.data.ArrayStore,它将数组转换为模型。
data 参数传递给
loadData 应该是一个模型数组,或者一个
可以转换为模型的对象数组(在这种情况下,
数组)。
[ [ 'none' ] ]。查看示例here
【讨论】:
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();
}
}
}
【讨论】: