如果内容全部为空,我要做的是隐藏整个列。
<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中运行
答案 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。