Flex DataGrid列宽:一列来统治它们全部?

时间:2010-11-16 14:55:05

标签: flex flash layout datagrid flex4

我有一个Flex 4,mx:DataGrid,其中包含以下(相关)属性:

width="100%"
horizontalScrollPolicy="off"

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

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

3 个答案:

答案 0 :(得分:1)

这是一个令人不快的异常,如果不是真正的错误,就像Flex做数据网格一样。在Adobe的辩护中,弄清楚如何调整所有列的大小似乎并非易事。

我一直处理的方法是在末尾创建一个虚拟列,minWidth为4,没有宽度规范。然后,这成为消除松弛的“可扩展列”。然后我确保允许其余的列足够的空间从一开始就显示它们的数据和它们的标题渲染器,给每个列提供一个minWidth和一个宽度。我遇到问题的唯一一次是在允许的空间中显示的列数太多,在这种情况下,您会得到一个水平滚动条,所有(或大多数)投注都会关闭。

答案 1 :(得分:1)

解决了这个问题如下:

在creationComplete中添加

{  
.....
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';               
}

答案 2 :(得分:0)

尝试捕获事件,将horizo​​ntalScrollPolicy设置为On,让Flex调整列本身的大小,然后将horizo​​ntalScrollPolicy设置为Off