0

实际上,我在每行的一个单元格中有一个带有 2 个 RadioButton 控件的 Datagrid。像这样的东西:

======================================================
|             |             |   (o) Radiobutton #1   |
|   cell #1   |   cell #2   |   (o) Radiobutton #2   |
======================================================

如果我删除一行并在此之后添加另一行,Flex 会自动重用以前删除的 RadioButtons(我认为是为了优化资源)。

将事件处理程序关联creationComplete到每个 RadioButton 我确认了我的怀疑:

  1. 我在特定单元格中创建了一行,其中包含 2 个 RadioButtons:两个creationComplete处理程序都成功执行。
  2. 我删除了这一行,并添加了另一行。
  3. 现在,creationComplete处理程序没有执行,因此 Flex 正在使用以前的 RadioButtons。

但我不希望在我的应用程序中出现这种行为。有什么方法可以强制 Flex 每次都创建组件(避免重用)?谢谢!

4

2 回答 2

1
But I don't want this behaviour in my app.

如果您关心性能和内存使用情况,那么您确实希望在您的应用程序中使用这种行为。请阅读有关创建 Renderers的内容。请特别注意有关创建可回收渲染器的部分。

Is there any way to force Flex to create the components every single time (avoiding reuse)?

您可以调整 DataGrid 的大小,以便 dataProvider 中的每个项目都显示在屏幕上。

如果您使用的是 Spark DataGrid,很可能您可以在布局上设置一个属性以不使用虚拟布局;但我没有深入研究 Spark DataGrid API,所以我不确定它是否存在。

我全心全意地建议您重新编写渲染器以侦听 dataChange() 事件并修改渲染器的显示元素(AKA RadioButton),而不是尝试为 dataProvider 的每个元素使用单个渲染器实例。

于 2012-05-28T17:25:56.467 回答
0

在 Flex 4/spark 列表中,您可以使用 useVirtualLayout 属性 (http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html) 打开和关闭此功能。但是,我认为 ADG 还没有 spark 版本,所以你被一个假设你关心内存和 CPU 使用率的组件“卡住”了,否则你无法分辨。

于 2012-05-28T18:34:49.860 回答