Flex - 在GroupingCollection中隐藏GroupingField

时间:2014-05-28 08:17:13

标签: flex groupingcollection

我正在使用具有5个GroupingFields的GroupingCollection,但有时我的数据没有其中一个GroupingFields的信息。如果GroupingField在我的数据上为null,我怎么能隐藏它?

这是我的GroupingCollection

<mx:GroupingCollection id="gc" source="{reqAnt}">
    <mx:grouping>
        <mx:Grouping>
            <mx:GroupingField name="year" />
            <mx:GroupingField name="month" />
            <mx:GroupingField name="building" />
            <mx:GroupingField name="floor" />
            <mx:GroupingField name="room" />
        </mx:Grouping>
    </mx:grouping>
</mx:GroupingCollection>

这是我的数据的一个例子

2014

一月

Building100
  Floor1
    Room1.1
    Room1.2
  Floor2
  Floor3
    Room3.1
    Room3.2

在Floor2的情况下,我不想显示GroupingField“房间”,因为在我的数据中它是null所以我想隐藏它。但仅限于Floor2。

谢谢。

1 个答案:

答案 0 :(得分:0)

GroupingCollection的来源是ArrayCollection?在GroupingCollection中使用AdvancedDatagrid的位置?是否可以在ADG的dataProvider上使用过滤器!

使用这样的系统: 创建dataProvider的集合以对其应用过滤器。

private function setFilter(filterFunctionName:Function):void
{
    ICollectionView(yourADG.dataProvider).filterFunction = filterFunctionName;
    ICollectionView(yourADG.dataProvider).refresh();
}

下面的函数就像你的集合的filterFunction的setter!在你的情况下,你想要一个能够过滤&#34;空节点的函数&#34; (在你的例子中为floor2)!

public function filter():void 
{
    setFilter(FilterEmptyNode);
}

下面的函数过滤源,如果数据正常则返回true,如果需要过滤则返回false:

public function FilterEmptyNode():Boolean
{
    // here the loop on your data to test if your node have children or not
}

当您想要过滤数据时,您只需要调用函数过滤器!

您可以在我的帖子中看到类似的问题:How to know if there are sub items/nodes in an AdvancedDatagrid

我希望这会有所帮助(对不起我的英语:s)