【问题标题】:Flex 4, AdvancedDataGrid: initial column widthFlex 4、AdvancedDataGrid:初始列宽
【发布时间】:2012-05-30 07:39:00
【问题描述】:

我遇到了高级数据网格列的宽度问题。 首先,我的布局是一个HDvidedBox,左边是导航,右边是模块,里面有advanceddatagrid。

左侧:导航

右侧:模块(例如高级数据网格)

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

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

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 的临时更改,重新设置列宽,然后更改回来。但是,它仍然不起作用。

有人知道吗?

【问题讨论】:

  • 在您的for 循环中,这条线看起来很可疑:advanceddatagrid.column.width = advanceddatagrid.column.width;。不应该使用上面一行中的列变量吗?
  • 哦,你是对的。我只是在这里拼错了。在我的原始脚本中是正确的。

标签: apache-flex advanceddatagrid column-width


【解决方案1】:

一些可能有帮助的相关参考资料(第一个对我有用):

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;
    } 
}

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

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2010-12-15
    • 2011-12-25
    相关资源
    最近更新 更多