Автор Оригинала:
joan_lafferty
Оригинал:
How do you change the background cell color in a DataGrid?
Проблема
Смена фонового цвета у ячейки DataGrid, не такая простая задача, так как у ячейки по умолчанию нету свойства отвечающего за это. Так что нужно создать свой ItemRenderer, где мы сможем нарисовать свой фон в методе updateDisplayList.
Решение
В данном примере, был создан простой DataGrid с двумя колонками X и Y значений. Если какое либо значение превышает 100, то фон окрашивается в красный цвет, для обоих колонок используется один и тот же ItemRenderer.
Подробнее
Листинг ItemRenderer'а:
Код:
package {
import mx.controls.Label;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.*;
import flash.display.Graphics;
public class CustomBackgroundComp extends Label
{
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
g.clear();
var grid1:DataGrid = DataGrid(DataGridListData(listData).owner);
if (grid1.isItemSelected(data) || grid1.isItemHighlighted(data))
return;
if (data[DataGridListData(listData).dataField] > 100)
{
g.beginFill(0xFF0033);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
}
}
}
}
Исходник