Layout ExtJs表单项位于内联和下,复杂

Layout ExtJs表单项位于内联和下,复杂,layout,extjs,positioning,Layout,Extjs,Positioning,我已经使用ExtJS4创建了一个表单 xtype: 'prg-formPanel', id: 'blog-edit-form', // id fixed : id: 'upload-form-'+this.filetype, url: baseUrl + "crud", border: 0, bodyStyle: { padding: '10px 20px'

我已经使用ExtJS4创建了一个表单

xtype: 'prg-formPanel',
             id: 'blog-edit-form', // id fixed : id: 'upload-form-'+this.filetype,
             url: baseUrl + "crud",
             border: 0,
             bodyStyle: {
                 padding: '10px 20px'
             },                    
             height: 600,
             defaultType: 'textfield',
             defaults: {
                 anchor: '95%',
                 allowBlank: true,
                 msgTarget: 'side',
                 labelWidth: 60
             },
             layout: {
                type: 'table',
                columns: 2
             },
             items: [{
                    inputType: 'hidden',
                    id: 'actionType',
                    name: 'actionType',
                    value: this.actionType,
                    scope: this
                },{
                     inputType: 'hidden',
                     id: 'id',
                     name: 'id',
                     value: (Ext.isEmpty(this.record)?null:this.record.get('id'))
                },{
                     inputType: 'textfield',
                     id: 'title',
                     fieldLabel: 'Başlık',
                     name: 'title',
                     labelWidth: 60,
                     value: (Ext.isEmpty(this.record)?null:this.record.get('title')),
                     colspan:2
                },{
                     inputType: 'textfield',
                     id: 'name',
                     fieldLabel: 'İsim',
                     name: 'name',
                     labelWidth: 60,
                     value: (Ext.isEmpty(this.record)?null:this.record.get('name')),
                     colspan:2
                },
                new Prg.checkBox({
                    fieldLabel: 'Aktif mi?',
                    name: 'activeFlag',
                    labelWidth: 60,
                    checked: (Ext.isEmpty(this.record)?false:this.record.get('activeFlag'))
                }),
                new Prg.idCombo({
                    fieldLabel : 'Dil',
                    labelWidth: 60,
                    emptyText : 'Dili seçiniz...',
                    id: 'langId',
                    name : 'langId',
                    store : this.ds_language,
                    scope: this
                }),{
                     inputType: 'textfield',
                     id: 'targetURL',
                     fieldLabel: 'Link',
                     name: 'targetURL',
                     labelWidth: 60,
                     value: (Ext.isEmpty(this.record)?null:this.record.get('targetURL')),
                     colspan:2
                },{
                    xtype: "TinyMCEEditor",
                    fieldLabel: "İçerik",
                    width: 800,
                    height: 400,
                    colspan:2,
                    name: "contentHTML",
                    id: "contentHTML",
                    tinyMCESettings: {
                        mode: "exact",
                        theme: "advanced",
                        skin: "o2k7",
                        // Tiny Settings Here
                            //...
                    value: (Ext.isEmpty(this.record)?"":this.record.get('contentHTML'))
                },
                new Ext.form.field.ComboBox({
                    id: "categories",
                    name: "categories",
                    fieldLabel: 'Kategori',
                    multiSelect: true,
                    displayField: 'name',
                    forceSelection: true,
                    labelWidth: 60,
                    store: this.ds_tags,
                    queryMode: 'remote',
                    scope: this,
                    colspan:2
                })
                ] // Form items closure
        }];
        this.buttons = [new Prg.btn({
            text: btnUploadMsg,
            handler: this.onSave,
            scope: this
        }),new Prg.btn({
            text: btnCancelMsg,
            handler: function() {
                this.hide();
            },
            scope: this
        })];
        this.callParent(arguments);
        this.form = this.getComponent('blog-edit-form').getForm(); // 'upload-form-'+this.filetype
    }
如您所见,我使用了表布局,一些表单项应该是内联的,其他的应该在新行中。我已经做了它的表,但是,现在项目的宽度是固定的。。。 我也想给他们95%的价值,让他们自动调整大小时,窗口大小。我找不到路。尝试添加
anchor
width:'90%'
但它不起作用

也许你可以用一个


以下是一些。

使用表单的默认布局:
form
并使用
FieldContainer
,其中需要在同一行上显示两个字段

通过这种方式,您可以利用
锚定
,仍然可以创建一个像您想要的那样复杂的布局

这应该可以工作(由于自定义类型,我无法测试它)


希望这有帮助。

当我做
布局时:“表单”
不起作用。你能提供工作代码吗?当然,给我几分钟时间来模拟一些东西。没关系,谢谢你,我还发现这些正是我想要的……太好了,很高兴能帮上忙:)
Ext.define('Prg.FormPanel', {
initComponent: function() {
    Ext.applyIf(this, {
        xtype: 'prg-formPanel',
        id: 'blog-edit-form',
        // id fixed : id: 'upload-form-'+this.filetype,
        url: baseUrl + "crud",
        border: 0,
        bodyStyle: {
            padding: '10px 20px'
        },
        height: 600,
        defaultType: 'textfield',
        defaults: {
            anchor: '95%',
            allowBlank: true,
            msgTarget: 'side',
            labelWidth: 60
        },
        layout: {
            type: 'form'
        },
        items: [{
            inputType: 'hidden',
            id: 'actionType',
            name: 'actionType',
            value: this.actionType,
            scope: this
        }, {
            inputType: 'hidden',
            id: 'id',
            name: 'id',
            value: (Ext.isEmpty(this.record) ? null : this.record.get('id'))
        }, {
            inputType: 'textfield',
            id: 'title',
            fieldLabel: 'Başlık',
            name: 'title',
            labelWidth: 60,
            value: (Ext.isEmpty(this.record) ? null : this.record.get('title'))
        }, {
            inputType: 'textfield',
            id: 'name',
            fieldLabel: 'İsim',
            name: 'name',
            labelWidth: 60,
            value: (Ext.isEmpty(this.record) ? null : this.record.get('name'))
        }, {
            xtype: 'fieldcontainer',
            layout: 'hbox',
            items: [
            new Prg.checkBox({
                fieldLabel: 'Aktif mi?',
                name: 'activeFlag',
                labelWidth: 60,
                checked: (Ext.isEmpty(this.record) ? false : this.record.get('activeFlag'))
            }), new Prg.idCombo({
                fieldLabel: 'Dil',
                labelWidth: 60,
                emptyText: 'Dili seçiniz...',
                id: 'langId',
                name: 'langId',
                store: this.ds_language,
                scope: this
            })]
        }, {
            inputType: 'textfield',
            id: 'targetURL',
            fieldLabel: 'Link',
            name: 'targetURL',
            labelWidth: 60,
            value: (Ext.isEmpty(this.record) ? null : this.record.get('targetURL'))
        }, {
            xtype: "TinyMCEEditor",
            fieldLabel: "İçerik",
            width: 800,
            height: 400
            name: "contentHTML",
            id: "contentHTML",
            tinyMCESettings: {
                mode: "exact",
                theme: "advanced",
                skin: "o2k7",
                // Tiny Settings Here
                //...
                value: (Ext.isEmpty(this.record) ? "" : this.record.get('contentHTML'))
            },
            new Ext.form.field.ComboBox({
                id: "categories",
                name: "categories",
                fieldLabel: 'Kategori',
                multiSelect: true,
                displayField: 'name',
                forceSelection: true,
                labelWidth: 60,
                store: this.ds_tags,
                queryMode: 'remote',
                scope: this
            })] // Form items closure
        });
    this.buttons = [new Prg.btn({
        text: btnUploadMsg,
        handler: this.onSave,
        scope: this
    }), new Prg.btn({
        text: btnCancelMsg,
        handler: function() {
            this.hide();
        },
        scope: this
    })];
    this.callParent(arguments);
    this.form = this.getComponent('blog-edit-form').getForm(); // 'upload-form-'+this.filetype
    }
});