Flex -隐藏GroupingCollection中的GroupingField



我使用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年

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

在Floor2的情况下,我不想显示GroupingField"room",因为在我的数据中它是空的,所以我想隐藏它。

谢谢。

您的GroupingCollection的来源是ArrayCollection ?在哪里使用您的GroupingCollection,在AdvancedDatagrid ?是否,您可以在ADG的数据提供程序上使用过滤器!

对于这样的系统:创建dataProvider的集合,以便在其上应用筛选器。

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

下面的函数作用类似于集合的filterFunction的setter !在你的例子中,你想要一个能够过滤"空节点"的函数(在你的例子中是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
}

当你想要过滤数据时,你只需要调用filter函数!

你可以看到我的帖子有一个类似的问题:如何知道是否有子项目/节点在AdvancedDatagrid

我希望这可以帮助一点(对不起我的英语:s)

最新更新