2

我想为多个附加了不同 filterFunction 并显示不同列的数据网格使用一个数据源(例如数组)。首先,我认为我使用了一个非常直接的方法:

  • 创建数组
  • 为每个 DataGrid 创建一个 ArrayCollection 并将“source”属性设置为 Array
  • 创建 DataGrid 并将其 dataProvider 属性设置为其指定的 ArrayCollection

所以现在。每个 ArrayCollection 都可以有自己的 filterFunction、排序状态等,但只需要一个 Array,所有数据都在内存中。

现在到了让我完全困惑的一点:随着新项目被添加到数组中,当然没有调度任何事件,我必须在每个 ArrayCollections 上手动调用 itemUpdated。在调试代码以更深入地了解 Flex 时,我试图弄清楚这个神秘的“itemUpdated”方法做了什么,特别是它在 adobe 文档中指出,如果没有给出“属性”(例如它是空的),一个简单的“刷新()”将发生。在整个调试过程中,我没有发现任何对“refresh()”的调用(我尽可能深入地了解整个框架(顺便说一句:代码中有很多有趣的评论:-)))。我唯一能找到的是 CollectionChangeEvent 在其“项目”属性中与 PropertyChangeEvent 一起调度。是那种“

正如预期的那样,adobe没有帮助:-(

非常感谢所有阅读全文的人。更要感谢任何回答并给我一些暗示的人,让我能够摆脱困惑并更好地理解(如果可能的话)Fles。

最好的问候,

赫伯特

4

1 回答 1

1

您必须为每个 dataProviders 调用 ArrayCollection.refresh() 以获取 dataGrids 以显示对源数组的新更改。

于 2010-02-25T15:24:59.320 回答