我尝试做的是隐藏整个列,如果内容都是空的。
<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”中的所有数据都是空的,所以我在visible属性下放置了一个值,根据数据的不同,这个值要么是真要么是假。但是,即使所有数据都是空的,visible属性等于假,它仍然是可见的。
我可以做些什么来解决这个问题?我正在运行Flex 3.2
2条答案
按热度按时间vcirk6k61#
为了沿着J_A_X的回答,您也可以add an eventListener for the dataProvider's
CollectionEvent.COLLECTION_CHANGE
event,然后评估是否需要hide any columns。7cwmlq892#
我认为您没有正确理解列的概念。列不是项目渲染器。它们不会从给定的dataProvider接收“data”属性,除非您在代码中的某个地方设置了容器的“data”属性(所有组件都有一个“data”属性,以便在项目渲染器中使用)。
因此,本质上,
data.originLocationExists
将始终为null,并且永远不会绑定,从而使您的列始终可见。也许您只是想改为执行{service.originLocationExists}
,因为只要'service'中包含该actual属性,它将与您的数据一致。