У меня есть вкладка с сеткой на первой вкладке, называемая основной сеткой. Я дважды щелкаю строку в основной сетке, и она загружает новую вкладку с сеткой форм. В сетке формы я установил макет столбца. У меня есть сетка в левой колонке и форма с радиогруппой в правой колонке.
Когда открывается новая вкладка, сетка из сетки формы загружается нормально, и когда я выбираю запись в сетке формы, она загружается в форму нормально, а также загружается радиогруппа с моей функцией преобразования. Значения, с которыми я работаю из сетки, это «Да» и «Нет», поэтому я конвертирую их с помощью моей функции «конвертировать» в 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;
};
Проблема в том, что радиогруппа отлично работает для ПЕРВОЙ открытой формы-сетки, но НЕ для второй или ЛЮБОЙ последующей открытой вкладки.