2009-02-18 3 views
1

je la classe suivante qui va AdvancedDataGridItemRenderer:Flex AdvancedDataGridItemRenderer backgroundColor/textColor pas rendu

package 
{ 
    import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer; 

    public class TestADGIR extends AdvancedDataGridItemRenderer 
    { 
      public function TestADGIR() 
      { 
        super(); 
        backgroundColor = 0; // black 
        textColor = 0xFFFFFF //16777215; // white 
      } 
    } 
} 

Comme vous pouvez le voir, le backgroundColor se prépare au noir et la textColor se prépare à blanc dans le constructeur. J'ai un AdvancedDataGrid qui utilise le TestADGIR pour l'une des colonnes. Mais lorsque la grille s'affiche, cette colonne est rendue avec du texte noir sur fond blanc - l'exact opposé de ce qui est défini dans le constructeur. Quelqu'un pourrait-il m'aider à comprendre ce que je fais de mal? Voici le code pour l'ADG:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" preinitialize="preInitApp()"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.collections.HierarchicalCollectionView; 
      import mx.collections.HierarchicalCollectionViewCursor; 

      [Bindable] 
      private var dpFlat:ArrayCollection = new ArrayCollection([ 
       {Region:"North", DisplayOrder: 2, Territory:"North1", Territory_Rep:"North1_Rep", ParticipantDisplayOrder: 1, Actual:38865, Estimate:40000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North2", Territory_Rep:"North2_Rep", ParticipantDisplayOrder: 2, Actual:29885, Estimate:30000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North3", Territory_Rep:"North3_Rep", ParticipantDisplayOrder: 3, Actual:29134, Estimate:30000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North4", Territory_Rep:"North4_Rep", ParticipantDisplayOrder: 4, Actual:52888, Estimate:45000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North5", Territory_Rep:"North5_Rep", ParticipantDisplayOrder: 5, Actual:38805, Estimate:40000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North6", Territory_Rep:"North6_Rep", ParticipantDisplayOrder: 6, Actual:55498, Estimate:40000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North6", Territory_Rep:"North6_Rep", ParticipantDisplayOrder: 7, Actual:44985, Estimate:45000}, 
       {Region:"North", DisplayOrder: 2, Territory:"North8", Territory_Rep:"North8_Rep", ParticipantDisplayOrder: 8, Actual:44913, Estimate:45000}, 

       {Region:"South", DisplayOrder: 1, Territory:"South1", Territory_Rep:"South1_Rep", ParticipantDisplayOrder: 1, Actual:38865, Estimate:40000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South2", Territory_Rep:"South2_Rep", ParticipantDisplayOrder: 2, ParticipantDisplayOrder: 2, Actual:29885, Estimate:30000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South3", Territory_Rep:"South3_Rep", ParticipantDisplayOrder: 3, Actual:29134, Estimate:30000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South4", Territory_Rep:"South4_Rep", ParticipantDisplayOrder: 4, Actual:52888, Estimate:45000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South5", Territory_Rep:"South5_Rep", ParticipantDisplayOrder: 5, Actual:38805, Estimate:40000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South6", Territory_Rep:"South6_Rep", ParticipantDisplayOrder: 6, Actual:55498, Estimate:40000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South7", Territory_Rep:"South7_Rep", ParticipantDisplayOrder: 7, Actual:44985, Estimate:45000}, 
       {Region:"South", DisplayOrder: 1, Territory:"South8", Territory_Rep:"South8_Rep", ParticipantDisplayOrder: 8, Actual:44913, Estimate:45000}]); 

      [Bindable] 
      private var itemRendererFactory:ClassFactory = null; 

      private function preInitApp():void 
      { 
       itemRendererFactory = new ClassFactory(TestADGIR); 
       //itemRendererFactory.properties = {backgroundColor: 0, textColor: 16777215 }; 
      } 

      private function sortByDisplayOrder(groupA:Object, groupB:Object, fields:Array = null):int 
      { 
        if (groupA.Region == groupB.Region) // if we are comparing two records from the same subgroup, then sort the participants 
        { 
         if (groupA.ParticipantDisplayOrder > groupB.ParticipantDisplayOrder) 
         { 
          return 1; 
         } 
         else if (groupA.ParticipantDisplayOrder == groupB.ParticipantDisplayOrder) 
         { 
          return 0; 
         } 
         else 
         { 
          return -1; 
         } 
        } 

        if (groupA.DisplayOrder > groupB.DisplayOrder) // sort the subgroups 
       { 
        return 1; 
       } 
       else if (groupA.DisplayOrder == groupB.DisplayOrder) 
       { 
        return 0; 
       } 
       else 
       { 
        return -1; 
       } 
      }    

     ]]> 
    </mx:Script> 

    <mx:VBox width="100%" height="100%"> 
     <mx:Panel title="AdvancedDataGrid Control Example" 
      height="100%" width="75%" layout="horizontal" 
      paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> 

      <mx:AdvancedDataGrid id="myADG" 
       width="100%" height="100%" 
       initialize="gc.refresh();" 
       horizontalScrollPolicy="off" 
       displayItemsExpanded="true" 
      >   
       <mx:dataProvider> 
        <mx:GroupingCollection id="gc" source="{dpFlat}"> 
         <mx:grouping> 
          <mx:Grouping compareFunction="sortByDisplayOrder"> 
           <mx:GroupingField name="Region"/> 
          </mx:Grouping> 
         </mx:grouping> 
        </mx:GroupingCollection> 
       </mx:dataProvider>   

       <mx:columns> 
        <mx:AdvancedDataGridColumn id="regionColumn" dataField="Region" itemRenderer="{itemRendererFactory}"/> 
        <mx:AdvancedDataGridColumn id="territoryColumn" dataField="Territory"/> 
        <mx:AdvancedDataGridColumn id="territoryRepColumn" dataField="Territory_Rep" 
         headerText="Territory Rep"/> 
        <mx:AdvancedDataGridColumn id="actualColumn" dataField="Actual"/> 
        <mx:AdvancedDataGridColumn id="estimateColumn" dataField="Estimate"/> 
       </mx:columns> 

      </mx:AdvancedDataGrid>   

     </mx:Panel> 
    </mx:VBox>  
</mx:Application> 

Merci! Sean

Répondre

4

Je découvrais que la couleur de fond peut être manipulé en définissant le fond propriété à vrai puis en affectant une valeur à la propriété backgroundColor. La couleur du texte est manipulée en appelant setStyle ("color", 0xFF0000). Merci à Eric de m'avoir indiqué la bonne direction sur les styles.

+0

cool. Je suis content que je puisse vous aider à vous rendre là où vous devez être, même si je n'ai pas directement répondu à votre question! –

+0

@Sean Staats, cool, la propriété de fond m'avait fait allusion! – Ryan

2

Cela pourrait être dû au fait backgroundColor et textColor ne sont pas des styles de la classe AdvancedDataGridItemRenderer:

http://livedocs.adobe.com/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.html#styleSummary

+0

Ils peuvent ne pas être les styles, mais ils sont des propriétés publiques de AdvancedDataGridItemRenderer. Je devrais utiliser des styles au lieu des propriétés. J'ai trouvé un style "couleur" qui fonctionne comme prévu. Malheureusement, il n'y a pas de style backgroundColor. Des suggestions pour être en mesure de changer la couleur de fond? –

+0

Eric, je dirais que votre réponse est utile, mais je n'ai pas encore 15 de réputation. –

2

Pour les couleurs d'arrière-plan de ligne personnalisé i outrepasser

 
protected function drawRowBackground(s:Sprite, rowIndex:int, 
             y:Number, height:Number, color:uint, dataIndex:int):void
de ADG

Questions connexes