Extjs Combo - 如何使用 GetForm().load 将值加载到组合
Posted
技术标签:
【中文标题】Extjs Combo - 如何使用 GetForm().load 将值加载到组合【英文标题】:Extjs Combo - How to load value to combo using GetForm().load 【发布时间】:2013-07-09 02:26:54 【问题描述】:我在如下表单中有一个组合框:
xtype: 'combo',
id: 'example',
name: 'ax',
triggerAction: 'all',
forceSelection: true,
editable: false,
allowBlank: false,
fieldLabel: 'example',
mode: 'remote',
displayField:'name',
valueField: 'id',
store: Ext.create('Ext.data.Store',
fields: [
name: 'id',
name: 'name'
],
//autoLoad: false,
proxy:
type: 'ajax',
url: 'example.php',
reader:
type: 'json',
root: 'rows'
)
我不希望自动加载,因为我启动时速度很慢。
但是当我单击编辑按钮并将值加载到组合时,我想为组合框设置一个值
this.down('form').getForm().load(
url: 'load.php',
success:function()
);
来自 load.php 的数据,例如(combe 的名称是 ax)
success:true , data : ax: '"id":"0","name":"defaults"'
但这不起作用。我该怎么做谢谢。
p/s:如果我有 autoLoad : true
并且数据是 success:true , data : ax: '0'
,那很好。但是当我开始时,这很慢。
【问题讨论】:
【参考方案1】:您要做的是确保在尝试设置组合值之前已加载组合。
您可以检查组合的商店中是否有任何数据:
if(combo.getStore().getCount() > 0)
//the store has data so it must be loaded, you can set the combo's value
//doing a form.load will have the desired effect
else
//the store isn't loaded yet! You can't set the combo's value
//form.load will not set the value of the combo
如果是这样,您可以设置该值。但更有可能的是它不会被加载。
你也可以这样做
//in the controller's init block
this.control(
"#myEditButton" : click: this.loadForm
);
//a function in your controller
loadForm: function(button)
var combo; //get your combo somehow, either via references or via the button
combo.getStore().load(
scope: this,
callback:
function(records, operation, success)
if(success)
//load your form here
);
我知道这可能看起来有很多代码,但这是确定组合是否已加载的唯一方法。如果不是,则不能设置它的值。
第三种选择是在打开视图之前显式加载商店。
【讨论】:
我有很多组合框(大约 5..),如果我这样做,我认为这很复杂 :(以上是关于Extjs Combo - 如何使用 GetForm().load 将值加载到组合的主要内容,如果未能解决你的问题,请参考以下文章