tabpanel中的Extjs4 radiogroup在第一个选项卡上加载良好,但在其他选项卡上加载不好
我有一个tabpanel,在第一个选项卡中有一个网格,叫做maingrid。我双击主网格中的一行,它将加载一个新选项卡,其中包含一个表单网格。在表格网格中,我设置了一个列布局。我在左栏有一个网格,在右栏有一个带有radiogroup的表单 当打开一个新选项卡时,表格网格中的网格将被精细加载,当我在表格网格中选择一条记录时,它将被加载到表格精细中,并使用我的转换函数加载radiogroup。我使用的网格值是“Yes”和“No”,因此我使用“convert”函数将它们转换为INT,然后返回它们 以下是我的代码片段:tabpanel中的Extjs4 radiogroup在第一个选项卡上加载良好,但在其他选项卡上加载不好,extjs4,tabpanel,radio-group,Extjs4,Tabpanel,Radio Group,我有一个tabpanel,在第一个选项卡中有一个网格,叫做maingrid。我双击主网格中的一行,它将加载一个新选项卡,其中包含一个表单网格。在表格网格中,我设置了一个列布局。我在左栏有一个网格,在右栏有一个带有radiogroup的表单 当打开一个新选项卡时,表格网格中的网格将被精细加载,当我在表格网格中选择一条记录时,它将被加载到表格精细中,并使用我的转换函数加载radiogroup。我使用的网格值是“Yes”和“No”,因此我使用“convert”函数将它们转换为INT,然后返回它们 以下
Ext.define('ValueRadioGroup',({
extend: 'Ext.form.RadioGroup',
alias: 'widget.valueradiogroup',
fieldLabel: 'Value',
columns: 2,
defaults: {
name: 'rating' //Radio has the same name so the browser will make sure only one is checked at once
},
items: [{
inputValue: '2',
boxLabel: 'Yey'
}, {
inputValue: '1',
boxLabel: 'Nay'
}]
}));
Ext.define('TargetViewModel', {
extend: 'Ext.data.Model',
fields : [
{name: 'ID'},
{name: 'FAMILYNAME'},
{name: 'TABLENAME'},
{name: 'TARGETNAME'},
{name: 'TARGETLABEL'},
{name: 'TARGETVALUE'},
{name: 'ITEMREL'},
{name: 'ITEMREF'},
{name: 'ITEMNAME'},
{name: 'ITEMMNEMONIC'},
{name: 'ALLOWED'},
{name: 'rating', type: 'int', convert: convertTARGETVALUE}
]
});
。。。这就是它被称为:
this.items = [{
// GRID
columnWidth: .65, // GRID width
xtype: 'ggtargetviewgrid',
store: this.store,
listeners: {
selectionchange: function(model, records) {
if (records[0]) {
var value = this.up('form').getForm().loadRecord(records[0]);
}
}
}
}
,
{
// FORM
columnWidth: 0.3, // FORM width
margin: '0 0 0 10',
xtype: 'fieldset',
title:'Target Details',
defaults: {
width: 280,
labelWidth: 50
},
defaultType: 'textfield',
items: [
{
fieldLabel: 'Name',
name: 'ITEMNAME'
}, {
xtype: 'valueradiogroup'
}]
}]
这是我的转换函数:
var convertTARGETVALUE = function(value, record) {
var tval = record.get('TARGETVALUE'), val = 0;
if (tval === 'Yes') return val+2;
if (tval === 'No') return val+1;
return val;
};
问题是,对于打开的第一个表单网格,radiogroup可以正常工作,但对于第二个表单网格,或任何后续打开的选项卡,radiogroup都不能正常工作。我遇到了同样的问题,我这样解决了它:
xtype:'radiogroup',
itemId:'storageType',
name:'entdata.storageType',//this give me the idea
items:[
{boxLabel:"s0",name:'entdata.storageType',inputValue:"0",checked:true},
{boxLabel:"s1",name:"entdata.storageType",inputValue:"1"},
{boxLabel:"s2",name:'entdata.storageType',inputValue:"2"},
{boxLabel:"s3",name:'entdata.storageType',inputValue:"3"} ]
setValue:function(value) {
if (!Ext.isObject(value)) {
var obj = new Object();
obj[this.name] = value;
value = obj;
}
Ext.form.RadioGroup.prototype.setValue.call(this, value);
}
用
setValue
加入name
,然后就可以工作了。selectionchange会被解雇吗?我不会打电话给它,但可以。