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


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

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

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


5714
2017-09-28 19:35


起源

这不是flex属性完成的吗?为什么不能使用它?您可以将网格定义的代码添加到帖子中吗? - Bryan


答案:


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

forceFit :Boolean指定true以具有列宽   在任何时候都重新调整比例。

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

配置为fixed:true的列将被省略   调整大小。


9
2017-10-03 17:13





所以我想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()
});

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


6
2017-09-11 20:49





某些列可能非常宽,例如:描述文本或长名称。如果将字段宽度设置为auto,则某些列可能占用视图上的大量空间。在这种情况下,最大宽度限制应该是多少。 50 CHAR,100 CHAR?


1
2018-04-19 16:13