Flex 4,AdvancedDataGrid:初始列宽

时间:2012-05-23 17:56:08

标签: flex advanceddatagrid column-width

我遇到了advanceddatagrid-columns宽度的问题。 首先,我的布局是一个HDividedBox,左边是导航,右边有一个模块,包含高级数据网格。

左侧:导航

右侧:模块(例如advanceddatagrid)

大多数列都有固定的宽度,有些是minWidth。现在,最初列的宽度是正确的。

所以问题是,每当我加载一个新模块并稍后重新加载高级数据网格时,列的初始宽度就会有所不同,尽管在加载模块的过程中我什么都没做。固定宽度和最小宽度都不是最初正确的。 我最近看到有一个错误的colums宽度的解决方案,它看起来像:

var oldPolicy:String = advanceddatagrid.myScrollPolicy;
advanceddatagrid.myScrollPolicy = ScrollPolicy.ON;

for(var i:int = 0; i < advanceddatagrid.columns.length; i++) {
    var column:AdvancedDataGridColumn = advanceddatagrid.columns[i] as AdvancedDataGridColumn;
    advanceddatagrid.column.width = column.width;
}
advanceddatagrid.validateNow();             
advanceddatagrid.myScrollPolicy = oldPolicy;                
advanceddatagrid.validateNow();

总的来说,这只是ScrollPolicy的临时更改,重新设置列宽,然后再更改回来。但是,它仍然是最重要的工作。

有没有人有线索?

1 个答案:

答案 0 :(得分:0)

一些可能有帮助的相关参考文献(第一篇对我有用):

http://userflex.wordpress.com/2011/04/14/force-resize-datagrid/

http://forums.adobe.com/message/4285461

总结第一篇文章(归功于Nick Schneble):

public function resizeColumns () : void
{
    grid.validateNow ();
    // forces the columns to size themselves properly
    for each (var column : AdvancedDataGridColumn in grid.columns)
    {
        column.width = column.width;
    } 
}

这看起来有点荒谬,但如果您在数据网格中的基础数据发生变化时执行此方法,那么您将精心布置列。