在数据网格中滚动时,选择会发生变化

时间:2012-12-20 12:09:35

标签: flex flex3

我是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>

1 个答案:

答案 0 :(得分:0)

您应在'data'项目中存储和处理您选择/未选择的状态,该项目将传递给每个项目阅读器。

或者您可以从itemrenderer引用网格并检查当前数据是否在所选项目中。

或者您可以扩展标准网格项目渲染器,而不是使用Box和覆盖方法,这些方法在选择/取消选择项目时调用。

但有没有特别需要使用旧的,有缺陷的,刚性的mx数据网格而不是火花的?您真的需要自定义选择指示而不是样式标准选择颜色吗?