我有一個自定義的AdvancedDataGrid,我們使用alternatingItemColors屬性,它爲AdvancedDataGrid的行顯示兩種不同的顏色。現在有時datagrid有15行,但只有5行會有數據,我們只想要前5行顯示交替的顏色,其餘的行應該只顯示一種顏色。有沒有人在過去做過這件事,如果有人可以請解釋如何做到這一點將非常感激。如果行數爲空,則禁用AdvancedDataGrid的alternatingItemColor屬性
在此先感謝。
我有一個自定義的AdvancedDataGrid,我們使用alternatingItemColors屬性,它爲AdvancedDataGrid的行顯示兩種不同的顏色。現在有時datagrid有15行,但只有5行會有數據,我們只想要前5行顯示交替的顏色,其餘的行應該只顯示一種顏色。有沒有人在過去做過這件事,如果有人可以請解釋如何做到這一點將非常感激。如果行數爲空,則禁用AdvancedDataGrid的alternatingItemColor屬性
在此先感謝。
將rowCount設置爲實際行數,當行數少於高度允許值時,或覆蓋drawRowBackground。
嘗試使用項目渲染你的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>
你必須重寫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);
}
}