1

我是 flex 和这个论坛的新手。我有一个数据网格,它在 itemrenderer 的 mx:VBox 中显示图像,现在我需要允许用户多选 VBox 。但是当我选择一些项目时,更改 VBox 的背景颜色并滚动网格它会自动选择一些随机项目并设置相同的背景颜色。我知道 flex 重用项目渲染器,我在这里读到了

但我怎样才能阻止我只选择项目。下面是我的代码

<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>
4

1 回答 1

0

您应在传递给每个 itemrenderer 的“数据”项中存储和处理您选择/未选择的状态。

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

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

但是有没有特别需要使用那个旧的、有缺陷的、僵硬的 mx 数据网格而不是 spark one?您真的需要自定义选择指示而不是标准选择颜色的样式吗?

于 2012-12-20T12:27:10.423 回答