extjs4如何自动将网格列宽度设置为内容的最大宽度?

Rob*_*bot 11 extjs

如果创建没有列宽或flex属性的网格,则列的默认值均为100px.

如果然后双击标题分隔符,则左侧的列将自动扩展为该列中最大数据项的大小.

有没有办法配置一些列自动具有该行为?

dma*_*man 9

forceFit: true 在您的GridView配置上将强制列填充所有剩余空间.

forceFit:Boolean指定true以使列宽始终重新比例.

将调整每列初始配置的宽度以适合网格宽度并防止水平滚动.如果稍后调整列的大小(手动或以编程方式),则将调整网格中的其他列的大小以适合网格宽度.

配置为fixed:true的列将被调整大小.


bpi*_*aya 6

所以我想sencha不再推荐使用forceFit,你应该尝试使用autoSize方法:
编辑:你有一个简短的例子,它适用于第一列:)

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { text: 'Name',  dataIndex: 'name',  width: 150, autoSizeColumn: true },
        { text: 'Email', dataIndex: 'email', width: 150, autoSizeColumn: true, minWidth: 150 },
        { text: 'Phone', dataIndex: 'phone', width: 150 }
    ],
    viewConfig: {
        listeners: {
            refresh: function(dataview) {
                dataview.panel.columns[0].autoSize();//works on the first colum
            }
        }
    },
    width: 450,
    renderTo: Ext.getBody()
});
Run Code Online (Sandbox Code Playgroud)

我有同样的问题,希望它有所帮助!