Вообще не совсем понятно.
Дело в том что дата провайдер содержит в себе объекты, которые передаются ячейкам, тоесть дата провайдер не содержит в себе информации для самой колонки.
Есть два способа, либо реализовать возможность смены цвета у каждой ячейки в отдельности (тогда нужно передавать, каждой ячейке цвет), либо вывести цвета в отдельное свойство.
Есть вариант через задницу, это задавать цвет скажем только первому эллементу в колонке, и остальные ячейки берут значение первого эллемента.
Вот например если юзать отдельное свойство colors

Код:
package controls
{
import mx.controls.DataGrid;
import mx.core.ClassFactory;
import mx.collections.ArrayCollection;
import mx.controls.dataGridClasses.DataGridColumn;
public class ColoredDataGrid extends DataGrid
{
private var _colors:Array;
public function ColoredDataGrid()
{
super();
itemRenderer = new ClassFactory(ItemRenderer);
}
[Bindable]
[Inspectable]
public function set colors(value:Object):void
{
if(value is ArrayCollection)
{
_colors = (value as ArrayCollection).source;
}
else if(value is Array)
{
_colors = value as Array;
}
for (var i:Number = 0; i < _colors.length; i++)
{
if(columns[i] != null)
{
(columns[i] as DataGridColumn).setStyle("backgroundColor", _colors[i]);
}
}
}
public function get colors():Object
{
return _colors
}
}
}
import mx.controls.Label;
import controls.ColoredDataGrid;
import mx.controls.dataGridClasses.DataGridListData;
class ItemRenderer extends Label
{
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var ld:DataGridListData = listData as DataGridListData;
var dg:ColoredDataGrid = ld.owner as ColoredDataGrid;
trace(ld.rowIndex);
trace(this.text);
trace("");
/*if(ld.rowIndex > 0 && dg.colors != null && dg.colors[ld.columnIndex] != null)
{
graphics.beginFill(dg.colors[ld.columnIndex]);
graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
graphics.endFill();
}*/
}
}