Доступ к нескольким 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>   

Что я пытаюсь сделать, так это изменить цвет фона (скажем, у меня есть одна строка данных) row1, cell1 на зеленый, когда пользователь нажимает на ячейку 3 строки row1.

Я не уверен, как мне получить доступ к этим элементам (ItemRenderer/SoundBox) в сетке.

Любые идеи? СПАСИБО!


person user310340    schedule 06.04.2010    source источник


Ответы (1)


посмотрите на следующий код, он вернет визуализатор элемента заданной строки и индекса столбца. Расширьте Advance dataGrid и определите эту функцию в расширенном классе, чтобы она работала, а затем используйте ее как «CustomADG.indicesToItemRenderer (0 ,0)" и в этом повторном объекте попытайтесь получить ссылку на 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];
            }
person Muhammad Husnain Ashfaq    schedule 17.06.2010