2010-03-07 6 views
2

Il semble qu'il existe différents hacks pour modifier la couleur d'arrière-plan de la ligne d'une grille de données, mais tous semblent se produire au moment du rendu.Comment modifier dynamiquement la couleur d'arrière-plan de la ligne DataGrid?

Voir: Setting background color for datagrid row in Adobe Flex

J'ai un DataGrid où je dois changer les couleurs de ligne rouge puis retour à la normale fréquemment en fonction de la ArrayCollection liée. Je cherche donc un moyen de changer les couleurs des lignes dynamiquement.

Quelqu'un peut-il aider? Évidemment, comme les changements se produisent fréquemment, il serait bien que le changement de la couleur de fond de la rangée ne soit pas un processus coûteux, mais le mendiant ne peut pas être choisi.

+0

houser2112 de réponse fonctionne, mais le mieux est d'utiliser un itemRenderer (similaire à la classe que Houser a écrite), mais pour changer les propriétés d'affichage sur cette classe sur le setter de données. –

Répondre

2

Vous devrez écrire un composant personnalisé, je vais inclure le code aseptisé de notre projet. Quelque part dans votre code ActionScript, vous devez écrire pour chaque colonne:

column.itemRenderer = new ClassFactory(CellRenderer); 

est ici la classe personnalisée:

public class CellRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     var g:Graphics = graphics; 
     g.clear(); 
     for each(var object:Object in arrayCollection) { 
      if (object.rowIndex == 0) { //or whatever your conditions are 
       g.beginFill(0xFFFFC0); 
       g.drawRect(0, 0, unscaledWidth, unscaledHeight); 
       g.endFill(); 
      } 
     } 
    } 
}