extjs:加载时如何设置组合框的值
Posted
技术标签:
【中文标题】extjs:加载时如何设置组合框的值【英文标题】:extjs: How to l set value for combobox when loading 【发布时间】:2011-03-22 09:30:40 【问题描述】:我正在寻找一个 load 侦听器,当组合框启动时,load将被调用并向服务器执行 ajax 以获取组合框的正确显示值。 但是,永远不会调用加载函数..我该如何解决它?
我想在组合框之前显示一个文本,所以我添加了属性fieldLabel: 'Save logs to:'
。但是没有显示文字。
谢谢, 女阴
this.log_save_combo = new Ext.form.ComboBox
(
store: ['Device', 'USB1', 'USB2']
, id: 'cplogs_log_save_combo'
, name: 'cplogs_log_save_combo'
, triggerAction:'all'
, fieldLabel: 'Save logs to:'
, editable: false
//, value: "Device"
, listeners:
'load': function()
alert("in load function");
);
【问题讨论】:
【参考方案1】:作为问题的一般解决方案,我选择了
listeners:
scope: this,
afterRender: this.selectFirstComboItem
与
selectFirstComboItem: function(combo)
// This will tell us if the combo box has loaded at least once
if (typeof combo.getStore().lastOptions !== "undefined")
// Grab the first value from the store
combo.setValue(combo.getStore().first().get(combo.valueField));
else
// When the store loads
combo.getStore().on("load", function(store, items)
// Grab the first item of the newly loaded data
combo.setValue(items[0].get(combo.valueField));
);
【讨论】:
afterRender
是我需要的。非常感谢!【参考方案2】:
我想做的一件事是在呈现组合框时从商店中选择一个默认值。将组合框值设置为商店中的第一个值效果很好。
Ext.create('Ext.form.field.ComboBox',
...
value : this.myStore.first().get('aFieldName')
【讨论】:
【参考方案3】:组合没有 load 事件。因此您编写的代码没有被执行。您已经有一个使用值定义的商店。您是否尝试将新值加载到附加到组合框的商店中? “组合框已启动”是什么意思?
要从服务器加载带有值的组合框,您只需要加载存储。如何加载组合框请参考this article。
------------------------------ 更新 ----- ------------------------------------
您是否尝试加载带有值的表单?在这种情况下,您可以使用 BasicFrom
提供的加载方法加载值。请参阅this example。即使它使用 XML,您也可以轻松更改为从 JSON 加载数据。
为了显示标签字段,您需要将容器的布局属性设置为
布局:'表格'
【讨论】:
嗨,我正在数据库中保存选定的组合框值。所以我想在带有组合框的页面启动时显示 ist。我会检查你提到的文章,Thx 示例链接已损坏dev.sencha.com/deploy/dev/examples/form/xml-form.js【参考方案4】:-
首先使用
store.load()
加载商店
在回调中使用setValue()
设置值
示例:
store.load(
callback: function ()
form.findField('name_of_the_combo').setValue('your_value');
);
【讨论】:
【参考方案5】:组合没有加载事件。您可以做的是在加载表单时从存储中加载组合中的数据。之后,您可以在组合的选择事件上设置字段级别。
示例:
listeners:
select: function()
Ext.getCmp('id_of_the_field')
.getEl()
.down('label.x-form-cb-label')
.update('Save logs to:');
【讨论】:
以上是关于extjs:加载时如何设置组合框的值的主要内容,如果未能解决你的问题,请参考以下文章