【发布时间】:2012-03-18 19:51:26
【问题描述】:
我在网格面板中使用Ext.form.field.Combobox 作为单元格编辑器:
product: {
xtype : "anypartfiltercombobox",
id : "product-editor",
store : new Ext.data.Store({
model: "Product",
data: APP.feedbacks.aUserProducts
}),
displayField : "name",
valueField : "id",
queryMode : "local",
emptyText : "Select game",
allowBlank : false,
forceSelection: true,
listeners : {
select: this._onProductChanged
}
},
device: {
xtype : "anypartfiltercombobox",
id : "device-editor",
store : Ext.create("stores.Devices", {
storeId: "device-editor-store",
data : APP.feedbacks.aProductDevices
}),
displayField : "name",
valueField : "id",
queryMode : "local",
emptyText : "Select device",
allowBlank : false,
autoRender : true,
forceSelection: true
}
在stores.Devices 商店中,我有一个方法loadByProduct(),应该通过在product 编辑器中更改值来使用它。
所以this._onProductChanged的来源是:
_onProductChanged = function(oField)
{
var iProductId = +oField.getValue(),
oDevicesEditor = Ext.getCmp("device-editor");
oDevicesEditor.store.loadByProduct(iProductId);
// Ext.StoresManager.lookUp("device-editor-sore").loadByProduct(iProductId);
}
所以当我首先在_onProductChanged 中更改product-editor 值(device-editor 尚未激活)时,Ext.getCmp("device-editor") 的值未定义。
但如果device-editor 已经打开,然后我更改了一个产品,那么一切正常。
顺便说一句,我还尝试使用StoresManager 获取存储并加载新数据,但在这种情况下,存储包含新值,组合框显示旧项目。
有人可以帮我解决吗?
谢谢, 安德烈。
【问题讨论】:
标签: javascript combobox extjs4 store