DataGridの背景色を変える
fxugフォーラムにて質問があったので作ってみました。
BackgroundColorDataGrid.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" height="400" width="600">
<mx:Script>
<![CDATA[
[Bindable]
public var myDP:Array =
[
{name:"Aさん", balance:-400, age:15},
{name:"Bさん", balance:100, age:16},
{name:"Cさん", balance:350, age:17},
{name:"Dさん", balance:500, age:18},
{name:"Eさん", balance:-600, age:19}
]
]]>
</mx:Script>
<mx:DataGrid id="myDG" dataProvider="{myDP}" >
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Name" itemRenderer="BackgroundColorItemRenderer" />
<mx:DataGridColumn dataField="balance" headerText="Balance" itemRenderer="BackgroundColorColumnRenderer"/>
<mx:DataGridColumn dataField="age" headerText="Age" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
BackgroundColorItemRenderer.as
package {
import mx.controls.Label;
import mx.controls.dataGridClasses.*;
import mx.controls.DataGrid;
import flash.display.Graphics;
public class BackgroundColorItemRenderer extends Label
{
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
var grid:DataGrid = DataGrid(DataGridListData(listData).owner);
if (data.balance >= 0)
{
g.beginFill(0x009900);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
else
{
g.beginFill(0xFF0000);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
}
}
}BackgroundColorColumnRenderer.as
package {
import mx.controls.Label;
import mx.controls.dataGridClasses.*;
import mx.controls.DataGrid;
import flash.display.Graphics;
public class BackgroundColorColumnRenderer extends Label
{
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
var grid:DataGrid = DataGrid(DataGridListData(listData).owner);
g.beginFill(0xCCCCCC);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
}
}以下はネタもとです。
Creating A Background Color Renderer
http://www.forta.com/blog/index.cfm/2006/6/8/Creating-A-Background-Color-Renderer