如题,主要功能是通过调用radioGroup.setValue()把后台的数据赋值给radio
如图:问题的关键:
调试的时候发现赋值成功,但是页面中的radiao却没有被选中
Ext.onReady(function() {
var win = new Ext.Window(
{
id : 'individual-win',
title : '个人资料',
width : 300,
height : 180,
collapsible : true,
plain : true,
// 初始化表单面板
items : new Ext.form.Panel(
{
id : 'individual-form',
standardSubmit : true,
labelWidth : 50, // 默认标签宽度板
labelAlign : 'right',
buttonAlign : 'center',
// 不设置该值,表单将保持原样,设置后表单与窗体完全融合
baseCls : 'header',
layout : 'form',
defaults : {
width : 200
},
// 默认字段类型
defaultType : 'textfield',
items : [ {
xtype : 'radiogroup',
layout : "column",
fieldLabel : '性别',
id : 'staffGender',
cls : 'key',
anchor : '95%',
columns : 2,
items : [ {
id:'staffGender1',
boxLabel : "先生",
name : 'staffGender',
inputValue : 'TRUE'
}, {
id:'staffGender2',
boxLabel : "女士",
name : 'staffGender',
inputValue : 'FALSE'
} ]
}
, {
name : 'staffAge',
fieldLabel : '年龄',
cls : 'key',
id : 'age'
}, {
name : 'staffLocation',
fieldLabel : '地址',
cls : 'key',
id : 'location'
}, {
name : 'staffAddress',
fieldLabel : '通讯录',
cls : 'key',
id : 'address'
} ],
buttons : [ {
text : '提交',
handler : function() {
//提交修改过的表单数据
}
} ],
listeners : {
render : function() {
//加载修改前的原始表单数据
Ext.getCmp("staffGender").setValue({staffGender : 'TRUE'});
console.log(Ext.getCmp('staffGender')
.getValue().staffGender);

}
},
renderTo : Ext.getBody()
}),
});
win.show();
});

解决方案 »

  1.   

    不好意思代码上传的时候想把关键代码加粗的,搞得很混乱,下面列出关键的代码
    {
    xtype : 'radiogroup',
    layout : "column",
    fieldLabel : '性别',
    id : 'staffGender',
    cls : 'key',
    anchor : '95%',
    columns : 2,
    items : [ {
    id:'staffGender1',
    boxLabel : "先生",
    name : 'staffGender',
    inputValue : 'TRUE'
    }, {
    id:'staffGender2',
    boxLabel : "女士",
    name : 'staffGender',
    inputValue : 'FALSE'
    } ]
    }
    Ext.getCmp("staffGender").setValue({staffGender : 'TRUE'});
    console.log(Ext.getCmp('staffGender')
    .getValue().staffGender);
      

  2.   

    恩,复制成功,但是没有刷新。
    你是在render时修改的东西,
    尝试在render之前修改。   ,listeners:{
          'beforerender':function(){
              Ext.getCmp('staffGender1').setValue(true);
         }
       }
      

  3.   


     ,listeners:{
          'beforerender':function(){
              Ext.getCmp('staffGender1').setValue({staffGender : 'TRUE'});
         }
       }
      

  4.   

    我也是你提出问题后去试的,
    我以前一直认为render和afterrender是一样的,
    但其实不一样,里面有个up概念我不懂,render就是在up好后触发,afterrender是整个组件渲染后触发,dom节点完成。
    我不晓得up到底在这里是做什么的,其实你用afterrender也可以修改成功的。