ExtJs динамически создают панель форм из записи хранилища данных

Я пытаюсь динамически заполнить ExtJs FormPanel из записи хранилища данных. Когда пользователь щелкает строку в GridPanel, вызывается метод buildForm и отправляется выбранная запись, переданная в качестве первого аргумента.

Приведенный ниже код (при отладке) кажется работающим, но doLayout метод не имеет никакого эффекта.

Может ли кто-нибудь указать мне в правильном направлении?

mymodule = Ext.extend(Ext.FormPanel, {
    forceLayout: true,
    initComponent: function () {
        Ext.applyIf(this, {
            id: Ext.id(),
            labelWidth: 75,
            defaultType: 'textfield',
            items: [{
                layout: 'form',
                items: [{
                    fieldLabel: 'test',
                    xtype: 'textfield'
                }, {
                    fieldLabel: 'test',
                    xtype: 'textfield'
                }]
            }]
        });
        mymodule.superclass.initComponent.call(this);
    },
    buildForm: function (record, c) {
        var form = this.getForm();

        var formItems = new Ext.util.MixedCollection();

        Ext.each(record.fields.items, function (item) {
            formItems.add(new Ext.form.TextField({
                labelStyle: 'width:100px',
                fieldLabel: item.name,
                name: item.dataIndex,
                id: 'field-' + item.name
            }));
        }, this);

        form.items = formItems;

        this.doLayout(false, true);

        form.loadRecord(record);
    }
});
6
задан tshepang 2 May 2014 в 02:53
поделиться