我正在寻找 加载 监听器,当组合框启动时, 加载 将被调用并向服务器执行ajax以获取组合框的正确显示值。 但是,永远不会调用load函数..我该如何修复它?
我想在组合框之前显示文本,所以我添加了属性fieldLabel: 'Save logs to:'
。但是文本没有显示出来。
THX, 约尼
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");
}
});
答案 0 :(得分:3)
作为问题的一般解决方案,我已经
了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));
});
}
}
答案 1 :(得分:1)
我想要做的一件事是在渲染组合框时选择商店的默认值。将组合框值设置为商店中的第一个值非常有用。
Ext.create('Ext.form.field.ComboBox', {
...
value : this.myStore.first().get('aFieldName')
答案 2 :(得分:0)
组合没有加载事件。因此您编写的代码没有被执行。您已经有一个使用值定义的商店..您是否尝试将新值加载到附加到组合框的商店? “combobox起来了”是什么意思?
要使用服务器中的值加载组合框,您只需加载商店。有关如何加载组合框的信息,请参阅this article。
-----------------------------------------更新----- ------------------------------------
您是否尝试加载带有值的表单?在这种情况下,您可以使用BasicFrom
提供的加载方法加载值。请参阅this example。即使它使用XML,您也可以轻松地更改为从JSON加载数据。
要显示标签字段,您需要将容器的布局属性设置为
布局:'形式'
答案 3 :(得分:0)
store.load()
setValue()
示例:强>
store.load({
callback: function () {
form.findField('name_of_the_combo').setValue('your_value');
}
});
答案 4 :(得分:0)
组合没有加载事件。您可以做的是在表单加载时从商店加载组合中的数据。之后,您可以在选择组合事件上设置字段级别。
示例:强>
listeners:{
select: function(){
Ext.getCmp('id_of_the_field')
.getEl()
.down('label.x-form-cb-label')
.update('Save logs to:');
}
}