我创建了一个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!
答案 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];
}