工作中遇到的一个问题,用extjs想后台传递多个值得情况下,后台每次得到的都是第一个值,
(设置extjs 的combox 多选设置属性multiSelect :true );
解决办法:
通过配置隐藏表单的形式:
{
name:'news_shequ',
id:'news_shequ',
allowBlank:true,
width:260,
multiSelect :true,
xtype:'combo',
id:'news_shequ',
store:store,
editable:false,
triggerAction : 'all',
queryMode : 'local',
displayField : 'item',
valueField : 'value',
fieldLabel : '发布到(社区)',
emptyText:'默认全部社区..',
listeners:{
'change':function(){
Ext.getCmp("shequ_hid").setValue(Ext.getCmp("news_shequ").getValue());
}
}
} ,new Ext.form.Hidden({
name:'shequ_hid',
id:'shequ_hid'
})
原理是,每次选择下拉框,总会得到我们所选的值,我们先将下拉框的值得到,然后再赋值给隐藏表单传到后台;这样后台就得到多个值了。
Ext.getCmp('news_shequ').setValue("value");
这样我们就必须将其转化为int数组赋值给我们的combo组件;
var SQ=new Array();//初始化一个数组作为int数组
var shequ = data[0].get('isSq');
if(shequ.indexOf(",")!=-1){//包含","
var sqArr = shequ.split(",");
for(var x=0;x<sqArr.length;x++){
var shequ = parseInt(sqArr[x]);
SQ.push(shequ);
}
}
//赋值
Ext.getCmp('news_shequ').setValue(SQ);
(设置extjs 的combox 多选设置属性multiSelect :true );
解决办法:
通过配置隐藏表单的形式:
{
name:'news_shequ',
id:'news_shequ',
allowBlank:true,
width:260,
multiSelect :true,
xtype:'combo',
id:'news_shequ',
store:store,
editable:false,
triggerAction : 'all',
queryMode : 'local',
displayField : 'item',
valueField : 'value',
fieldLabel : '发布到(社区)',
emptyText:'默认全部社区..',
listeners:{
'change':function(){
Ext.getCmp("shequ_hid").setValue(Ext.getCmp("news_shequ").getValue());
}
}
} ,new Ext.form.Hidden({
name:'shequ_hid',
id:'shequ_hid'
})
原理是,每次选择下拉框,总会得到我们所选的值,我们先将下拉框的值得到,然后再赋值给隐藏表单传到后台;这样后台就得到多个值了。
如何通过后台传来的key给我们的下拉框赋值呢?
首先要保证后台传过来的是int整型数据,如果不是int的则需要通过parseInt()函数进行转换。
这样我们可以通过Ext.getCmp('news_shequ').setValue("value");
的形式可以直接实现;
这样我们就必须将其转化为int数组赋值给我们的combo组件;
var SQ=new Array();//初始化一个数组作为int数组
var shequ = data[0].get('isSq');
if(shequ.indexOf(",")!=-1){//包含","
var sqArr = shequ.split(",");
for(var x=0;x<sqArr.length;x++){
var shequ = parseInt(sqArr[x]);
SQ.push(shequ);
}
}
//赋值
Ext.getCmp('news_shequ').setValue(SQ);