访问AdvancedDataGrid中的多个ItemRenderer

时间:2010-04-06 20:08:54

标签: itemrenderer advanceddatagrid

我创建了一个AdvancedDataGrid,其中大部分单元格都基于ItemRenderer。自定义ItemRenderer(SoundBox)扩展了VBox。此自定义组件允许基于用户单击单元格对背景颜色进行简单更改。

以下是AdvancedDataGrid的片段(没什么太高级的):

<mx:AdvancedDataGrid id="fsfw" dataProvider="{fsfWordList}" sortableColumns="false" >
   <mx:groupedColumns>
   <mx:AdvancedDataGridColumn width="35" dataField="wordcount" headerText=" "/>
   <mx:AdvancedDataGridColumn id="myWord" width="150" headerText="TEST ITEMS">
     <mx:itemRenderer>
        <mx:Component>
           <components:SoundBox width="100%" letterSound="{data.word}" />
         </mx:Component>
      </mx:itemRenderer>
   </mx:AdvancedDataGridColumn>
   <mx:AdvancedDataGridColumn width="200" headerText="Correct / 2 points" dataField="sound1">
      <mx:itemRenderer>
         <mx:Component>
            <components:SoundBox width="100%" letterSound="{data.sound1}" pointColumn="2"/>
         </mx:Component>
      </mx:itemRenderer>
   </mx:AdvancedDataGridColumn>
  </mx:groupedColumns>
</AdvancedDataGrid>   

我正在尝试做的是当用户点击第1行的cell3时,更改(我只是说我有一行数据)row1的背景颜色,将cell1更改为绿色。

我不确定如何在网格中访问这些项目(ItemRenderer / SoundBox)。

任何想法? THX!

1 个答案:

答案 0 :(得分:0)

查看以下代码,,,它将返回给定行和colomn索引的项目rendrer。扩展Advance dataGrid并在扩展类中定义此函数,以使其工作,然后像“CustomADG”一样使用它。 indicesToItemRenderer(0,0)“并且在该reuturend对象中尝试获取对soundComponent的引用。

public function indicesToItemRenderer(rowIndex:int, colIndex:int):IListItemRenderer
            {
                var firstItemIndex:int = verticalScrollPosition - offscreenExtraRowsTop;
                if (rowIndex < firstItemIndex ||
                    rowIndex >= firstItemIndex + listItems.length)
                {
                    return null;
                }

                return listItems[rowIndex - firstItemIndex][colIndex];
            }