【问题标题】:Flex DataGrid column width: one column to rule them all?Flex DataGrid 列宽:一列来统治它们?
【发布时间】:2011-05-10 20:59:37
【问题描述】:

我有一个 Flex 4,mx:DataGrid 设置了以下(相关)属性:

width="100%"
horizontalScrollPolicy="off"

我在所有DataGridColumns 上设置了minWidth,并在其中一个上设置了宽度。如果我只是最大化/最小化应用程序的显示(在浏览器或独立的 Flash 播放器中),则列可以很好地放大和缩小。但是,如果您抓住应用程序的边缘并拖动它以使其更大,那么只有一列会变得非常大。当您再次向下拖动大小时,一列保持很大,但所有其他列都被压扁了。

这是 Flex DataGrid 中的错误,还是我只是缺少要设置的关键属性(或数据网格列上的属性),以便在您拖动放大应用程序时使所有列增长和缩小?

【问题讨论】:

    标签: apache-flex flash layout datagrid flex4


    【解决方案1】:

    这是一个令人不快的异常,如果不是真正的错误,就像 Flex 处理数据网格的方式一样。在 Adob​​e 的辩护中,弄清楚如何调整所有列的大小似乎不是一件容易的事。

    我一直处理这个问题的方式是在末尾创建一个虚拟列,其 minWidth 为 4,并且没有指定宽度。然后,它就成为了填补空缺的“可扩展列”。然后,我确保让其余列有足够的空间从一开始就显示它们的数据和它们的标题渲染器,方法是给每个列一个 minWidth 和一个宽度。我唯一遇到的问题是在允许的空间中显示的列过多,在这种情况下,您会看到一个水平滚动条并且所有(或大多数)赌注都关闭。

    【讨论】:

    • 但是当您拉伸网格/应用程序时,唯一要扩展的列将是可扩展的列,对吧?因此,所有这一切都是为了避免您的“真实”列之一被拉伸。不确定这是否好多了...
    • 我的解决方法的唯一优点是它可以防止 ADG 触发其糟糕的列宽调整启发式。我不提供它作为灵丹妙药。
    【解决方案2】:

    解决了这个问题如下:

    在创建中完成添加

    {  
    .....
    grd_Principal.addEventListener(ResizeEvent.RESIZE, resizeGrid);
    grd_Principal.dispatchEvent(new ResizeEvent(ResizeEvent.RESIZE));
    ...
    }
    
    protected function resizeGrid(event:ResizeEvent):void
    {
        grd_Principal.horizontalScrollPolicy = 'on';                // datagrid
        ..... your DataGridColumn
        dgc_nCdId.width = grd_Principal.width * 0.06;               //datagridcolumn in percent
        dgc_Excluir.width = 20;                                                     //normal
        dgc_cNmUsuario.width = grd_Principal.width * 0.226;
    
        grd_Principal.horizontalScrollPolicy = 'off';               
    }
    

    【讨论】:

    • 因此,您在每次调整大小时手动设置每列的宽度。猜猜这可能会有所帮助,但是不得不在代码中而不是在 MXML 标记中指定所有宽度有点糟糕。
    【解决方案3】:

    尝试捕获事件,将 Horizo​​ntalScrollPolicy 设置为 On,让 Flex 自行调整列大小,然后将 Horizo​​ntalScrollPolicy 设置回 Off

    【讨论】:

    • 捕获哪个事件?一些示例代码会很好,因为我很喜欢在事件处理程序中将属性设置为 true 然后 false 不会影响任何事情,因为 Flex/Flash 不是多线程的。
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多