我在网格中有一个itemselecor,我有一个组合框,只能重新加载itemselector中的商店(值字段应保持不变)
这是itemselector
var grid = Ext.widget('form', {
id: 'grid',
title: '',
width: 600,
bodyPadding: 10,
renderTo: 'itemselectorproduto',
items: [{
xtype: 'itemselector',
name: 'itemselector',
id: 'itemsel',
anchor: '100%',
imagePath: '/ux/images/',
store: store,
displayField: 'Nome',
valueField: 'ID',
value: vitrine,
allowBlank: true,
msgTarget: 'side'
}]
});
我试图调用正常的store.load(),但它没有效果,并且在控制台上没有显示错误
如果需要,我会发布更多代码,但我认为这应该足够了
谢谢,
答案 0 :(得分:0)
查看代码,如果ItemSelector它看起来不像它支持商店中的任何更改一旦被绑定。它基本上创建了数据的本地副本。如果你调用bindStore方法来分配不同的商店 - 它将删除你的选择。
您可以随时改进ItemSelector中的代码以允许此类行为。这应该不是问题。您可以在绑定时订阅商店的datachanged或load事件,然后在存储数据更改时处理情况。
答案 1 :(得分:0)
实际上我认为做这种事情的最好方法是使用ItemSelector的“populateFromStore”。当然除了扩展项目选择器。如果需要扩展,您应该查看ItemSelector的“onBindStore”函数。
onBindStore: function(store, initial) {
var me = this;
if (me.fromField) {
me.fromField.store.removeAll()
me.toField.store.removeAll();
// Add everything to the from field as soon as the Store is loaded
if (store.getCount()) {
me.populateFromStore(store);
} else {
me.store.on('load', me.populateFromStore, me);
}
}
}
因此,如果您看到空存储,它会挂钩到load事件。它应该是这样的:
onBindStore: function(store, initial) {
var me = this;
if (me.fromField) {
me.fromField.store.removeAll()
me.toField.store.removeAll();
me.store.on('load', me.populateFromStore, me);
// Add everything to the from field as soon as the Store is loaded
if (store.getCount()) {
me.populateFromStore(store);
}
}
}