ExtJS - 在FormPanel列布局中排列表单元素

时间:2011-06-13 15:43:34

标签: forms layout extjs

我有一个包含3列的FormPanel。每列占FormPanel宽度的33%。看起来像这样:

searchForm = new Ext.FormPanel({
    frame: true,
    title: 'Search Criteria',
    labelAlign: 'left',
    labelStyle: 'font-weight:bold;',
    labelWidth: 85,
    width: 900,
    items: [{
        layout: 'column',
        items: [{ // column #1
            columnWidth: .33,
            layout: 'form',
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Banner ID',
                name: 'bannerID',
                anchor: '95%',
            },
            new Ext.form.ComboBox({
                fieldLabel: 'Advertiser',
                typeAhead: true,
                triggerAction: 'all',
                mode: 'local',
                emptyText: 'Advertiser',
                store: advertiserList,
                valueField: 'id',
                displayField: 'name'
            })] // close items for first column
        }, {
            columnWidth: .33,
            layout: 'form',
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Banner Name',
                name: 'bannerName',
                anchor: '95%',
            },
            new Ext.form.ComboBox({
                fieldLabel: 'Art Type',
                typeAhead: true,
                triggerAction: 'all',
                mode: 'local',
                emptyText: 'Art Type',
                store: artTypesList,
                valueField: 'id',
                displayField: 'name'
            })] // close items for second column
        }, {
            columnWidth: .33,
            layout: 'form',
            items: [{
                xtype: 'hidden'
            },
            new Ext.form.ComboBox({
                fieldLabel: 'Art Size',
                typeAhead: true,
                triggerAction: 'all',
                mode: 'local',
                emptyText: 'Art Size',
                store: artSizeList,
                valueField: 'id',
                displayField: 'name'
            })] // close items for third column
        }]
    }]
}); // close searchForm FormPanel

它显示的内容如下所示: Screenshot

唯一的问题是我希望“艺术尺寸”字段/标签与“广告商”和“艺术类型”字段在同一行上对齐。有没有办法添加一个“空白”项目,这样它会强制输入到正确的行?还有其他方法可以解决这个问题吗?

谢谢!

修改: 这有效:

{
    xtype: 'component',
    fieldLabel: ' ',
    labelSeparator: ' ',  
}

4 个答案:

答案 0 :(得分:8)

默认情况下隐藏空标签(该字段被推到左侧)。 而不是把'& nbsp;'标签......

fieldLabel: ' ',
labelSeparator: ' ', 

你可以正确地做到:

hideEmptyLabel : false
即使没有指定标签,

女巫也会对齐您提交的组件。

答案 1 :(得分:7)

编辑:这有效:

           {
                xtype: 'component',
                fieldLabel: ' ',
                labelSeparator: ' ',  
            }

答案 2 :(得分:3)

您的解决方案可行,但不是ExtJS(/ HTML表)方式。

您正在使用column布局,因此您可以在横幅名称字段上使用colspan: 2,从而产生相同的输出。
您还可以使用rowspan让您的字段覆盖两行:)

答案 3 :(得分:1)

上述所有内容似乎都对我有用。我必须明确设置empy单元格的高度。

xtype: 'label',
text: ' ',
flex:1,
height:22

至少可以说是令人失望。

但是这仅适用于 vBox 布局。如果我使用布局,则无效:(