extjs 给下拉框设置数据源问题

extjs 给下拉框设置数据源问题,第1张

异步加载导致。

你在没有加alert()前,数据源尚未加载完成,你就进行赋值了。所以只会显示key,而不会是value。

你的alert(),是赋值延后了,数据已经加载完成,所以可以了。

解决思路:你要在数据源加载完成后在进行赋值。——用回调函数callback吧

我的代码(可能麻烦,不过你这个情况我这样解决):

以下代码加在你创建settleTempStore后。

settleTempStore.on('load',function(){Ext.getCmp('openStlnod').setValue(Ext.getCmp('openStlnod').getValue())})

可能标点会不会不匹配,直接打没校验过,你直接调整下。

EXTJS 下拉框 combobox 可以通过3种方式赋值

1定义时 用value:值

2.点击选项赋值

3.用setValue 或者 setRawValue 方法赋值

需要注意的是 setValue 或者 setRawValue 需要在对象 渲染后才能执行 否则或赋值失败

对于您的问题 要看代码 是否是在渲染后赋值 , 或者 在没有 setValue 时 是否正常

不需要使用load来实现,使用store来 *** 作记录集

//定义一个数据模型

Ext.define('data', {

extend: 'Ext.data.Model',

fields: ['val']

})

//定义一个记录集

var cData = Ext.create('Ext.data.ArrayStore',{

model: 'data',

data: [['数据1'],['数据2'],['数据3'],['数据4']]

})

//向已有的记录集插入新的数据,但是注意,这里只是在js数组里面添加了数据,要保存到数据库,还需在该函数后面添加ajax

function insert(){

var r = Ext.create('data', {val: '添加新的数据'})//这里的数据如果是用户输入的话,只需要换成那个文本框的值就行了,val: Ext.getCmp('xxxid号').getValue()

cData.insert(0, r)

//ajax *** 作

alert('successfully done!')

}

//创建combo框

Ext.onReady(function(){

var combo = Ext.create('Ext.form.field.ComboBox', {

store: cData,

fieldLabel: '下拉框',

displayField: 'val',

width: 498,

labelWidth: 60,

triggerAction: 'all',

renderTo: Ext.getBody()

})

})


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11783080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存