Переделал немного примере Питера Энта по отрисовке фонов рядов в гриде:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
public var keyCell:String;
override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number,
color:uint, dataIndex:int):void
{
if (dataIndex > (dataProvider as ArrayCollection).length-1) {
return;
}
var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);
if( item[keyCell] == 0 ) {
color = 0xf97a86;
}
else {
color = 0xFFFFFF;
}
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
}
]]>
</mx:Script>
</mx:DataGrid>
Но вот в чем затык: например, датапровайдера хватает на 10 рядов и 10 ряд у нас красный, а теперь, если датапровайдер изменяется до 5 элементов, то эти пять элементов перекрашиваются правильно, а старый 10 ряд так и остается красным. Пробовал всякие там invalidate'ы - не помогает.