2012-05-24 17 views
1

我有一個自定義的AdvancedDataGrid,我們使用alternatingItemColors屬性,它爲AdvancedDataGrid的行顯示兩種不同的顏色。現在有時datagrid有15行,但只有5行會有數據,我們只想要前5行顯示交替的顏色,其餘的行應該只顯示一種顏色。有沒有人在過去做過這件事,如果有人可以請解釋如何做到這一點將非常感激。如果行數爲空,則禁用AdvancedDataGrid的alternatingItemColor屬性

在此先感謝。

回答

0

將rowCount設置爲實際行數,當行數少於高度允許值時,或覆蓋drawRowBackground。

0

嘗試使用項目渲染你的ADG: -

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" 
       > 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 

      [Bindable] 
      private var dpHierarchy:ArrayCollection= new ArrayCollection([ 
       {name:"A", region: "Arizona"}, 
       {name:"B", region: "Arizona"}, 
       {name:"C", region: "California"}, 
       {name:"D", region: "California"} 
      ]); 

     ]]> 
    </fx:Script> 

    <mx:AdvancedDataGrid id="myADG" 
         width="500" height="500" 
         paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0" 
         dataProvider="{dpHierarchy}" 
         itemRenderer="DrawAlternateRowColor"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn dataField="name" headerText="Name" /> 
      <mx:AdvancedDataGridColumn dataField="region" headerText="Region" /> 
     </mx:columns> 

    </mx:AdvancedDataGrid> 

</s:Application> 

// ItemRenderer的名字: - DrawAlternateRowColor - 您可以使用相同的概念,你CADG。

<?xml version="1.0" encoding="utf-8"?> 
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx" 
            focusEnabled="true" alternatingItemColors="[#0000FF, #FF0000]" 
            width="100%" height="100%"> 
    <s:Label id="lblData" verticalAlign="middle" text="{listData.label}" /> 
</s:MXAdvancedDataGridItemRenderer> 
1

你必須重寫DataGrid和覆蓋drawRowBackground方法,如果ROWIND超過行數,然後設置默認的顏色。看到代碼段提到如下 -

公共類CustomDataGrid擴展AdvancedDataGrid {

protected override function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void{ 
      var XMLdata:XML=rowNumberToData(dataIndex) as XML;      
      if(XMLdata!=null){     
        if(XMLdata.attribute(Constants.col) != undefined && XMLdata.attribute(Constants.col) != ""){ 
            color=XMLdata.attribute(Constants.col);     
        }else{ 
          color=0xFFFFFF; 
        }            
      }      
      super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);     
    }    
} 
相關問題