如何:在 Ext JS4 中自动调整 GridPanel 列宽 + 读取网格中的所有列值

Posted

技术标签:

【中文标题】如何:在 Ext JS4 中自动调整 GridPanel 列宽 + 读取网格中的所有列值【英文标题】:How To: Auto Resize GridPanel Column Width + Read all Column Values in a Grid in Ext JS4 【发布时间】:2011-08-30 16:26:24 【问题描述】:

问题1:有没有我可以自动设置gridpanel的列宽, 基于重新调整的列数据值长度(列宽 = 最大数据值 字符串长度)

问题 2:为了实现上述目标(以及其他原因),我需要知道如何获得 特定的网格列?一旦我知道逻辑,应该将其实现为列 渲染器功能?每次都会调用列渲染器函数,一个数据 记录被读取(然后它的过度杀伤)?在这种情况下,我可以覆盖任何其他功能吗?

大多数解决方案(网格列宽计算器, autoResizeColumns 等)我在网上找到的是以前的版本,我使用的是 EXTJS 4 版本。

提前致谢 斯科特

【问题讨论】:

【参考方案1】:

实际上有一个 Extjs 4 插件可以根据内容的宽度以及标题自动调整网格列的大小。

这里是链接:Extjs 4 column auto resize plugin

【讨论】:

【参考方案2】:

    很遗憾,没有。最好的办法是为通常固定的数据设置指定的宽度,然后使用flex 设置其他列。 (或编写/等待插件)。

    值不存储在grid 中,它们存储在gridstore 中。您只需要循环有问题的store 并从指定列中获取所有值。例如:

    Ext.Array.each(Ext.StoreManager.get('myStore').getRange(0), function(record)
        console.log(record.get("myColumnName")); 
    );
    

【讨论】:

【参考方案3】:

我找到了一个使用 CSS 包装列的临时修复方法,如下所述: ExtJS 4 - Wrapping the column headers in grid panel

将以下内容添加到 ext js css

.x-column-header-inner 
    line-height: normal;
    padding-top: 3px !important;
    padding-bottom: 3px !important;
    text-align: center;
    top: 20%;


.x-column-header-inner .x-column-header-text 
    white-space: normal;

【讨论】:

以上是关于如何:在 Ext JS4 中自动调整 GridPanel 列宽 + 读取网格中的所有列值的主要内容,如果未能解决你的问题,请参考以下文章

在 ext js4 中访问 json 数据?

Ext.grid.ColumnModel 最小宽度和自动调整列大小

ext js4 到 sencha 触摸转换器 [关闭]

带有表单 cals servlet 的 Ext.js 4 窗口返回 JSON 但无法填充网格面板

EXT.JS 4.0.5 中的网格滚动问题,不考虑工具栏高度

基于内容自动调整Ext JS Window,最大可达maxHeight