无法在flex datagrid中动态更改列宽

时间:2011-05-17 15:47:01

标签: flex actionscript-3 flex3

非常令人沮丧。我正在使用包含数据网格的单例类(弹出窗口,这意味着它不会忘记最后使用的变量)。我正在使各种列可见/不可见,根据从数据库调用接收的数据设置宽度和标题。一切正常,但是当我在改变列宽度的点之前和之后放置断点时,我根本看不到datagrid宽度的变化!相反,我看到一些完全不同步的值作为datagrid列的宽度!但是,由于它是一个单例类,下次我调用这个弹出窗口时,我会看到我在上次调用中设置的宽度。

我必须弄乱调用setWidth()函数(这是我的自定义函数,它会在动作脚本中更改datagrid的宽度)。我应该把这个函数称为什么?我尝试在creationComplete,show和dataprovider的setter中。没有帮助......

我将水平滚动策略保持为“关闭”(将其打开会完全混乱)。

如果我执行datagrid.validateNow(),它没有帮助!如果我在改变之前和之后放置断点,为什么我不会立即看到宽度变化。有人请告诉我这里我做错了什么。

感谢。

2 个答案:

答案 0 :(得分:1)

首先,你要表明自己可能出现的问题。

1)当组件可见时更新宽度=>没有变化

2)当您关闭弹出窗口并重新打开它时,这是正常的,这也意味着该项目已被重新渲染,而这不是第一次。这意味着你确实必须尝试自己触发它。

以下是有关Flex组件生命周期的一些有用链接。这些应该可以帮助您确定要调用和/或覆盖的方法。

http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/

http://www.slideshare.net/rjowen/adobe-flex-component-lifecycle-presentation

此外,你不应该直接调用validateNow(),而是使用失效方法。

我想在这种情况下你需要触发组件的测量以便调用 invalidateSize()应该没问题。

干杯

答案 1 :(得分:0)

关键是在设置宽度之前设置horizo​​ntalScrollPolicy =“on”。看到 fixed row width in DataGrid quirkFlex 3 DataGrid Column Width Problem