0

我正在使用具有 5 个 GroupingFields 的 GroupingCollection,但有时我的数据没有其中一个 GroupingFields 的信息。当我的数据为空时,如何隐藏该 GroupingField?

这是我的 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“房间”,因为在我的数据中它是空的,所以我想隐藏它。但仅限于 Floor2 的情况。

谢谢你。

4

1 回答 1

0

你的来源GroupingCollectionArrayCollection?你的GroupingCollection, 在哪里使用AdvancedDatagrid是否可以在 ADG 的 dataProvider 上使用过滤器!

使用这样的系统: 收集您的 dataProvider 以对其应用过滤器。

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

下面的函数就像你的集合的 filterFunction 的设置器!在您的情况下,您需要一个能够过滤“空节点”的函数(在您的示例中为 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)

于 2014-07-21T09:16:43.450 回答