无法隐藏Flex中的列

时间:2011-03-24 15:17:56

标签: flex flex3

如果内容全部为空,我要做的是隐藏整个列。

<mx:DataGrid width="100%" dataProvider="{service}" id="dg1">
    <mx:columns>
        <mx:DataGridColumn headerText="Location Origin" dataField="originLocation" visible="{data.originLocationExists}" />
        <mx:DataGridColumn headerText="Location Destination" dataField="destinationLocation" visible="{data.destinationLocationExists}" />  
        <mx:DataGridColumn headerText="Location Group Origin" dataField="originLocationGroup" visible="{data.originLocationGroupExists}" />
        <mx:DataGridColumn headerText="Location Group Destination" dataField="destinationLocationGroup" visible="{data.destinationLocationGroupExists}"/>               
    </mx:columns>
</mx:DataGrid>

在上面的示例中,有时“Location Origin”中的所有数据都将为null,因此在visible属性下,我根据数据设置了一个值为true或false的值。但即使所有数据都为null且visible属性等于false,它仍然可见。

我该怎么做才能解决这个问题?我在Flex 3.2中运行

2 个答案:

答案 0 :(得分:1)

我认为你没有正确理解列的概念。列不是项呈示器。他们没有收到dataProvider给出的'data'属性,除非您的代码中有某些东西设置了容器的'data'属性(所有组件都有'data'属性,可以在项呈示器中使用)。

因此,基本上,data.originLocationExists将始终为null并且永远不会绑定,从而使您的列始终可见。也许您只想做{service.originLocationExists},因为只要'服务'在其中具有实际属性,这就与您的数据一致。

答案 1 :(得分:1)

为了配合J_A_X的答案,您还可以add an eventListener for the dataProvider's CollectionEvent.COLLECTION_CHANGE event然后评估是否需要hide any columns