1

我在 Flex 4.6 中使用 MX Tree 控件。它的数据提供者是一个嵌套的 ArrayCollection。控件的工作方式是,当树节点展开时,事件会冒泡到另一个组件,该组件检测事件并从服务器获取数据并更新 ArrayCollection(即单击分支的 ArrayCollection)。但是在我关闭特定分支并再次展开它之前,更新的数据不会显示在树中。

例如

  • + 文件夹 1
  • + 文件夹 2
  • + 文件夹 3

最初,当用户展开文件夹 1 时,文件夹 1 的子项是一个空的 ArrayCollection,从后端获取数据并添加到子项 ArrayCollection。但这不会显示文件夹 1 下的子项。如果我关闭文件夹 1 并再次打开它,它会显示出来。我认为当数据添加到 ArrayCollection 时,它应该更新显示。有人可以让我知道我可能做错了什么吗?

4

2 回答 2

0

根据我的经验,以下内容可以通知 Tree 控件其列表需要重绘:

  • arrayCollection.refresh();
  • tree.invalidateList();
于 2012-09-07T14:59:58.547 回答
0

我找到了问题的解决方案。当任何子 ArrayCollection 类更新时,我需要在主 ArrayCollection 类上调用 itemupdated。这会正确更新视图。因此,在上面的示例中,如果用户单击文件夹 2,事件将传播到一个模型,该模型将数据添加到文件夹 2 的子数组集合中,一旦完成,我应该在我的主 ArrayCollection 上调用 itemupdated,并将更新的项目作为文件夹 2 ,这正确更新了树视图。

于 2012-09-09T02:04:10.383 回答