【问题标题】:exclude single items from grouping in groupingcollection从 groupingcollection 中的分组中排除单个项目
【发布时间】:2011-01-28 21:13:25
【问题描述】:

我有一个来自远程对象的平面数据数组,我想对要分组的任何内容进行分组,但是将单个项目(没有与其他任何共同数据的那些)单独留下并且不分组,打开每个项目很烦人节点只是发现里面只有一个项目,所以无论如何都不需要把它放在那个组中。

这是有人做过的吗?我找不到任何参考,我不知道从 groupingcollection 中获取分层数据然后迭代它会有什么好处,听起来像是很多重复的工作。

【问题讨论】:

  • 据我所见,这是不可能的,而且让它发生并非易事,很抱歉成为坏消息的承担者。我深入研究了 GroupingCollection.as 代码,发现 refresh() 方法调用了一个名为 makeGroupedCollection() 的私有方法,该方法又调用了另一个私有方法 buildGroups(),在该方法中有一个完成工作的循环。在我看来,您的选项是扩展 GroupingCollection 并覆盖刷新,或“猴子补丁”复制 GroupingCollection 并修改循环(即使 ADG 或其他 UI 可能对它期望 GC 如何呈现数据感到敏感)GL
  • 另外,您可以制作一个显示分组集合计数的渲染器,这样至少您知道某些节点只有 1 个子节点(我们已经使用过它,这对我来说很有意义,维护分组行的一致行为,但无需扩展即可看到只有 1 个,尽管我知道这与仅查看内联数据不同)。

标签: apache-flex actionscript-3 flex4 advanceddatagrid


【解决方案1】:

我最终按照 shaunhusain 所说的做了,我创建了自己的 groupingcollection 副本,并按照它创建组的方式进行了猴子补丁,但还不够干净,无法发布或一般使用,但正在努力。

【讨论】:

    【解决方案2】:

    也可以通过使用 groupitemrenderer 并隐藏基于的披露图标来完成 关于孩子的数量。

    <mx:AdvancedDataGrid id="adg" 
         groupItemRenderer="my.namespace.GroupedItemRenderer"
    </mx:AdvancedDataGrid>
    

    GroupedItemRenderer 是 AdvancedDataGridGroupItemRenderer 的子类

    在更新显示列表中:

    if (data && data.hasOwnProperty("children")) {
    disclosureIcon.visible = (data.children.length > 0);
    }
    

    【讨论】:

    • 那会显示第一项内容并跨栏显示吗?
    猜你喜欢
    • 2013-06-10
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-10-18
    相关资源
    最近更新 更多