Радиогруппа Extjs4 на вкладке, отлично загружается на первой вкладке, но не на других

У меня есть вкладка с сеткой на первой вкладке, называемая основной сеткой. Я дважды щелкаю строку в основной сетке, и она загружает новую вкладку с сеткой форм. В сетке формы я установил макет столбца. У меня есть сетка в левой колонке и форма с радиогруппой в правой колонке.

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

Проблема в том, что радиогруппа отлично работает для ПЕРВОЙ открытой формы-сетки, но НЕ для второй или ЛЮБОЙ последующей открытой вкладки.


person PaulW    schedule 11.04.2012    source источник
comment
срабатывает selectionchange?   -  person sha    schedule 11.04.2012
comment
Я не называю это, но мог бы.   -  person PaulW    schedule 12.04.2012


Ответы (1)


У меня была такая же проблема, и я решил ее следующим образом:

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);
}

Присоединяйтесь к name с setValue, тогда можете работать.

person Smapple    schedule 08.11.2012