ext版本2.1
1. 单选按钮组实例化代码如下:
this._radioIsSingleSource = new Ipms.component.RadioGroup({ fieldLabel: '单一来源', allowBlank: false, width: 100, items: [{ readOnly: false, boxLabel: '是', width: 10, name: 'SingleSource', inputValue: true, checked: true }, { readOnly: false, boxLabel: '否', width: 10, name: 'SingleSource', inputValue: false, checked: true }] });
2. 依照Ext的习惯RadioGroup的items就应该是我们自定义的items,不过事实不是这样的,他在我们自定义的items外面又嵌套了一个MixedCollection类型的items。代码如下(有删减):
// CheckBoxGroup private onRender : function(ct, position){ //.. // 构造布局 for(var i=0, len=this.items.length; i<len; i++){ // this.items就是我们的items var ci = i % numCols; // 根据列数控制行 if(this.items[i].fieldLabel){ this.items[i].hideLabel = false; } cols[ci].items.push(this.items[i]); // 把我们的items分配到相应的列 }; // .. // 构造参数 Ext.apply(panelCfg, { layoutConfig: {columns: numCols}, items: cols }); // 实例化panel this.panel = new Ext.Panel(panelCfg); // 查询panel的所有Field对象 var fields = this.panel.findBy(function(c){ return c.isFormField; }, this); // 把Field对象添加到items中 this.items = new Ext.util.MixedCollection(); this.items.addAll(fields); // 注意这里,结果为 this.items.items = [fields] //.. },
所以,我们的items是数据:Field的配置信息;而RadioGroup的items是真正的控件Field。
3. 之所以要搞清楚这些,是因为ext2.1中没有setValue方法的定义,代码如下,需要我们自己重写。
/** * @method initValue * @hide */ initValue : Ext.emptyFn, /** * @method getValue * @hide */ getValue : Ext.emptyFn, /** * @method getRawValue * @hide */ getRawValue : Ext.emptyFn, /** * @method setValue * @hide */ setValue : Ext.emptyFn,