非常令人沮丧。我正在使用包含数据网格的单例类(弹出窗口,这意味着它不会忘记最后使用的变量)。我正在使各种列可见/不可见,根据从数据库调用接收的数据设置宽度和标题。一切正常,但是当我在改变列宽度的点之前和之后放置断点时,我根本看不到datagrid宽度的变化!相反,我看到一些完全不同步的值作为datagrid列的宽度!但是,由于它是一个单例类,下次我调用这个弹出窗口时,我会看到我在上次调用中设置的宽度。
我必须弄乱调用setWidth()函数(这是我的自定义函数,它会在动作脚本中更改datagrid的宽度)。我应该把这个函数称为什么?我尝试在creationComplete,show和dataprovider的setter中。没有帮助......
我将水平滚动策略保持为“关闭”(将其打开会完全混乱)。
如果我执行datagrid.validateNow(),它没有帮助!如果我在改变之前和之后放置断点,为什么我不会立即看到宽度变化。有人请告诉我这里我做错了什么。
感谢。
答案 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)
关键是在设置宽度之前设置horizontalScrollPolicy =“on”。看到 fixed row width in DataGrid quirk 或Flex 3 DataGrid Column Width Problem