【发布时间】:2011-08-29 00:09:59
【问题描述】:
我正在尝试编写我的 flex 应用程序,以便它在启动时恢复用户的设置。该应用程序有 3 个数据网格(在任何时候[屏幕上] 都只有一个可见),如果用户进行任何调整大小事件,我只需保存网格的状态。
保存状态完美,恢复时出现问题。似乎只有可见的数据网格才能正确恢复。在所有其他网格上,宽度都是错误的,与我恢复的设置不匹配。
问题在于,当应用程序启动时,数据网格的大小不正确。每个数据网格都占据了整个屏幕,但最初它们只被赋予了非常小的尺寸(即 200 宽)
有没有办法强制数据网格在创建时正确调整大小?或者是否有可能知道数据网格何时“最大化”我不想连接到调整大小事件 - 如果可能的话 - 因为我会很频繁地得到那个,我只想恢复一次设置。
这是我用来恢复列宽的代码:
var grid:DataGrid = ...;
... for each column ...
... parse width into width (ie. width is now "320")
// If it's in the config, it's visible
col.visible = true;
col.width = width;
... After loop ...
grid.invalidateSize();
grid.invalidateDisplayList();
编辑:
这是你们要求的信息:
设置保存到数据库中(flex proejct 连接到 JBoss)。我只是用列的名称和宽度保存了一个 CSV 类型的东西。我知道这是可行的,因为应用程序启动时可见的一个数据网格的大小正确。
是的,网格使用相对大小(即 100%)——我无法真正改变这一点,因为我希望网格占用其容器中的所有可用空间——我希望用户能够调整浏览器的大小并使其看起来正确。
每个网格都包含在自己的 Hbox 中
数据网格是在应用程序启动时创建的——但您只能看到其中一个。它们位于选项卡导航器类型的东西中,但它的创建策略设置为“全部”,因此可以用数据填充它们(填充需要一些时间,通常用户会在前面的网格上坐一会儿。)
我无法将调整大小的内容放入 creationComplete 处理程序,因为我最终遇到了同样的问题。网格的大小在创建后就像 50(它应该是页面宽度的 1000、100%)——然后我去设置列的大小(显然 > 50)并且调整大小什么都不做
【问题讨论】:
-
你能给我们更多的信息吗?你如何保存“大小”?你什么时候创建网格?你怎么知道它正在正确保存?
标签: apache-flex actionscript-3 datagrid flex4