我是flex和这个论坛的新手。我有一个数据网格,在itemrenderer中显示mx:VBox中的图像,现在我需要允许用户多选VBox。但是当我选择一些项目时,更改VBox的背景颜色并滚动网格,它会自动选择一些重新项目并设置相同的背景颜色。我知道flex重用项目渲染器,我读了它here
但是如何阻止我只选择项目。下面是我的代码
<mx:DataGrid id="dgPhoto"
variableRowHeight="true"
dataProvider="{StyleItemsArray}"
verticalGridLineColor="white"
verticalGridLines="true"
showHeaders="false"
width="100%"
height="100%"
allowMultipleSelection="true"
>
<mx:columns>
<mx:DataGridColumn width="250" headerText="Preview" dataField="img">
<mx:itemRenderer>
<mx:Component>
<mx:VBox height="215" horizontalAlign="center" click="this.setStyle('backgroundColor', 'white')">
<mx:Script>
<![CDATA[
]]>
</mx:Script>
<mx:HBox horizontalAlign="center" horizontalGap="0">
<mx:Image brokenImageBorderSkin="{null}" brokenImageSkin="@Embed(source='../img/errorIcon231.png')" id="image1" width="180" source="{data.source}" horizontalAlign="right"></mx:Image>
<mx:VBox horizontalAlign="center" verticalGap="2">
<mx:Button click="{btnZoom_clickHandler(event, data.sourceHRES, data.label, data.IDMSFile)}" toolTip="Zoom" id="btnZoom" icon="@Embed(source='../img/zoom.png')" fillColors="#BB3030"/>
<mx:Button click="{btnDownload_clickHandler(event, data.IDMSFile)}" toolTip="Place this style" id="btnDownload" icon="@Embed(source='../img/Download.png')" fillColors="#BB3030"/>
</mx:VBox>
</mx:HBox>
</mx:VBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
答案 0 :(得分:0)
您应在'data'项目中存储和处理您选择/未选择的状态,该项目将传递给每个项目阅读器。
或者您可以从itemrenderer引用网格并检查当前数据是否在所选项目中。
或者您可以扩展标准网格项目渲染器,而不是使用Box和覆盖方法,这些方法在选择/取消选择项目时调用。
但有没有特别需要使用旧的,有缺陷的,刚性的mx数据网格而不是火花的?您真的需要自定义选择指示而不是样式标准选择颜色吗?