Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблема с добавлением radiobutton в radiogroup (https://javascript.ru/forum/extjs/14694-problema-s-dobavleniem-radiobutton-v-radiogroup.html)

Tie 26.01.2011 17:27

Проблема с добавлением radiobutton в radiogroup
 
Здравствуйте.
Возникла необходимость сделать Radiogroup, в котором количество radiobutton'ов определяется после аякс-запроса (в представленном ниже коде пока стоит заглушка в виде переменной response_count). Решил написать для начала маленькую заготовку без аякса, но даже она не работает. Код:

var my_form = new Ext.FormPanel ({
    id: 'my_form',
    items: {
        id: 'my_fieldset',
        xtype: 'fieldset',
        items: {
            id: 'my_radiobutton_group',
            xtype: 'radiogroup',
            fieldLabel: 'Some text'
        }
    }
});

var response_count = 4;

for(var i = 1; i < response_count; i++){
    var my_radio = {
        xtype: 'radio',
        boxLabel: 'Radio ' + i,
        name: 'rb' + i,
        inputValue: i
    };

    Ext.getCmp('my_radiobutton_group').add(my_radio);
}


FireBug отвечает: "Ext.getCmp("my_radiobutton_group").add is not a function"
Проблема в том, что у компонента radiogroup нету метода add (проверял в документации). Без radiogroup обойтись нельзя, так как их должно быть тоже несколько. Возникает вопрос - как это лучше реализовать пограмотнее?

VKS 01.02.2011 18:07

my_form.doLayout();
в конце добавь

Tie 02.02.2011 12:57

Пробовал - бесполезно. Да и вообще не в этом дело. Выполнение кода встает на строке 24, и все. Что добавляй в конец doLayout, что не добавляй...

Вообще, уже переделал по-другому, не очень грамотно, но работает. Вкратце - генерю полностью RadioGroup с помощью php на стороне сервака при аякс-запросе. А на стороне пользователя только выполняю сгенерированный код.

VKS 02.02.2011 17:28

Цитата:

Сообщение от Tie (Сообщение 90796)
Выполнение кода встает на строке 24, и все. Что добавляй в конец doLayout, что не добавляй...

Это означает что форма не проиницилизированна еще, и соответственно менеджер компонентов не может найти ваш radiogroup.

Выполняйте добавление после отображения формы.

my_form.on('render', function(){

var response_count = 4;

for(var i = 1; i < response_count; i++){
    var my_radio = {
        xtype: 'radio',
        boxLabel: 'Radio ' + i,
        name: 'rb' + i,
        inputValue: i
    };

    Ext.getCmp('my_radiobutton_group').add(my_radio);
}

my_form.doLayout();

}


Часовой пояс GMT +3, время: 21:59.