0

我创建了一个 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>   

我要做的是在用户单击 row1 的 cell3 时将 row1、cell1 的背景颜色(假设我有一行数据)更改为绿色。

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

有任何想法吗?谢谢!

4

1 回答 1

0

看下面的代码,,它将返回给定行和列索引的项目渲染器。扩展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];
            }
于 2010-06-17T06:17:25.207 回答