ExtJs组合框存储加载和表单
我的表单上的组合框有问题。 问题是,当我加载表单数据时(使用ExtJs组合框存储加载和表单,extjs,extjs4,Extjs,Extjs4,我的表单上的组合框有问题。 问题是,当我加载表单数据时(使用form.loadRecord)有时组合框是空的,即使我知道模型有数据 当我查看Firebug时,我可以看到combobox存储是在记录加载之后加载的。我认为这就是原因——combobox存储稍后加载,然后再加载记录 以下是我设置组合框存储的方式: //All stores have autoload:true configuration. var possessionGroundsStore = Ext.create(
form.loadRecord
)有时组合框是空的,即使我知道模型有数据
当我查看Firebug时,我可以看到combobox存储是在记录加载之后加载的。我认为这就是原因——combobox存储稍后加载,然后再加载记录
以下是我设置组合框存储的方式:
//All stores have autoload:true configuration.
var possessionGroundsStore = Ext.create('path.to.store');
var vehicleTypesStore = Ext.create('path.to.store');
var usePurposesStore = Ext.create('path.to.store');
this.editView = Ext.create('path.to.view');
this.editView.getPossessionGroundsField().store = possessionGroundsStore;
this.editView.getVehicleTypeIdComboBox().store = vehicleTypesStore;
this.editView.getUsePurposeField().store = usePurposesStore;
//later
this.editView.loadRecord(record);
有解决这个问题的通用方法吗
我现在看到的唯一方法是在每个combobox存储中使用store.load
回调
然后在加载所有存储后执行loadRecord,但这似乎很复杂
有什么帮助吗
更新:
调用form.loadRecord
时,它在内部调用field.setValue()
。
因此,要点是:在调用setValue
之前,必须填充组合框存储。
如果未加载存储,您将看到valueField
而不是displayField
组合框的默认配置将在创建后首次展开时触发存储加载
任何组合框都会发生这种情况,除非您给它一个queryMode:'local'
config。换句话说,默认的组合框配置几乎总是在组件创建后完成加载它的存储。出于这个原因,我觉得奇怪的是,你的组合很难加载得太晚,可能是他们加载得太早了,因为autoLoad:true
但是,我没有遇到与您相同的问题,因为我通常使用queryMode:“local”
设置组合框,并在应用程序初始化阶段为它们预加载存储。我这样做是因为我的组合商店通常都是参考商店,可以在我的应用程序的许多不同视图中使用。当我创建组合组件时,我不会重新创建存储,我只是通过Ext.getStore('ComboStoreId')
获取对已经存在并加载的引用存储的引用。你可以试着这样设置你的应用程序
如果您不想这样做,您也可以尝试从组合存储中删除自动加载:true
配置,然后在调用loadRecord
后调用yourComboStore.load()
组合框的默认配置将在创建后第一次展开时触发存储加载
任何组合框都会发生这种情况,除非您给它一个queryMode:'local'
config。换句话说,默认的组合框配置几乎总是在组件创建后完成加载它的存储。出于这个原因,我觉得奇怪的是,你的组合很难加载得太晚,可能是他们加载得太早了,因为autoLoad:true
但是,我没有遇到与您相同的问题,因为我通常使用queryMode:“local”
设置组合框,并在应用程序初始化阶段为它们预加载存储。我这样做是因为我的组合商店通常都是参考商店,可以在我的应用程序的许多不同视图中使用。当我创建组合组件时,我不会重新创建存储,我只是通过Ext.getStore('ComboStoreId')
获取对已经存在并加载的引用存储的引用。你可以试着这样设置你的应用程序
如果您不想这样做,您也可以尝试从组合存储中删除
自动加载:true
配置,然后调用yourComboStore.load()
调用loadRecord
尝试使用triggerAction:“全部”用于组合框属性使用triggerAction:“全部”用于组合框属性使用triggerAction,我尝试了您的方法(第二个)但是运气不好。查看我的更新。谢谢,我尝试了你的方法(第二个)但是运气不好。查看我的更新。