Extjs如何使滚动条出现?

时间:2013-08-14 13:00:29

标签: extjs

我需要在表单更宽然后包含容器时显示滚动条。我在容器上设置属性autoScroll:true,但它不起作用。反正有没有得到我需要的结果?

这是工作示例

http://jsfiddle.net/mQC3B/2/

代码

Ext.create('Ext.container.Viewport', {

    layout: {
        header: false,
        type: 'border',
        padding: 0
    },
    items: [{
            region: 'north',
            padding: '0 150 0 150',
            height: 36,
            html: 'header'
        }, {
            id:'mainPanelContainer',
            autoScroll: true,
            padding: '0 150 0 150',
            region: 'center',
            items:[
                {
                    xtype:'form',
                    items:[{
                        xtype: 'container',
                        flex: 1,
                        layout: 'anchor',
                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }, {
                            anchor: '95%',
                            xtype: 'htmleditor',
                            fieldLabel: 'Popis',
                            name: 'Description',
                            height: 240,
                            width: 450
                        }]
                    }, {
                        xtype: 'container',
                        flex: 1,
                        layout: 'anchor',
                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }, {
                            xtype: 'container',
                            margin: '0 0 8 0',
                            layout: 'hbox',
                            items: [{
                                xtype: 'textfield',
                                fieldLabel: 'Name',
                                name: 'Name'
                            }, {
                                xtype: 'textfield',
                                fieldLabel: 'Name',
                                name: 'Name'
                            }]
                        }, {
                            xtype: 'textfield',
                            fieldLabel: 'Name',
                            name: 'Name'
                        }]
                    }]
                }
            ]
        }, {
            region: 'south',
            height: 25,
            padding: '0 150 0 150',
            html: 'Copyright © 2013'
        }]
});

修改

添加布局:'fit'到mainPanelContainer后会出现滚动条,但无法滚动到表单隐藏的右侧。

http://jsfiddle.net/mQC3B/3/

4 个答案:

答案 0 :(得分:7)

在您的编辑小提琴中,更改:

padding: '0 150 0 150',

在中心区域:

margin: '0 150 0 150',

信不信由你,extjs布局不能很好地处理padding属性。我之前用布局遇到了这个问题。看起来在你的例子中,保证金将有助于实现你想要的。另一种实现相同结果的方法是使用边框布局深度嵌套另一个级别,并使用空白区域添加东部和西部区域以模仿填充的行为。

答案 1 :(得分:2)

autoScroll: true是这样做的方法,但您需要让所有布局都正确才能正常工作。尝试将layout: 'fit'放在mainPanelContainer和/或form上。

答案 2 :(得分:2)

基本上你只需要添加autoScroll属性,如:

autoScroll: true

答案 3 :(得分:0)

如果您删除嵌套表单并将填充放在总体容器(本例中的视口)上,它似乎可以让您了解您所理解的内容。

http://jsfiddle.net/mQC3B/15/

Ext.create('Ext.container.Viewport', {

    padding: '0 150 0 150',

    layout: {
        header: false,
        type: 'border'
    },
    items: [{
        region: 'north',
        height: 36,
        html: 'header'
    }, {
        id: 'mainPanelContainer',
        autoScroll: true,
        region: 'center',
        xtype: 'form',
        items: [{
            xtype: 'container',
            flex: 1,
            layout: 'anchor',
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }, {
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }, {
                anchor: '95%',
                xtype: 'htmleditor',
                fieldLabel: 'Popis',
                name: 'Description',
                height: 240,
                width: 450
            }]
        }, {
            xtype: 'container',
            flex: 1,
            layout: 'anchor',
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }, {
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }, {
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }, {
                xtype: 'container',
                margin: '0 0 8 0',
                layout: 'hbox',
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Names',
                    name: 'Name'
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Name',
                    name: 'Name'
                }]
            }, {
                xtype: 'textfield',
                fieldLabel: 'Name',
                name: 'Name'
            }]
        }]
    }, {
        region: 'south',
        height: 25,
        html: 'Copyright © 2013'
    }]
});