Это решение для ActionScript 3. Вам нужно сделать это в специальном классе itemRenderer. Я предлагаю вам расширить класс Label и в нем переопределить функцию updateDisplayList.
public class DynamicItemRenderer extends Label
{
private var _backgroundColorFunction:Function=null;
override protected function commitProperties():void
{
super.commitProperties();
var cellBackgroundColor:Boolean=this.document.hasOwnProperty("cellColorFunction");
if (cellBackgroundColor && _backgroundColorFunction == null)
{
_backgroundColorFunction=this.document.cellColorFunction as Function;
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if (_backgroundColorFunction != null)
{
_backgroundColorFunction.call(this, data, graphics, unscaledWidth, unscaledHeight);
}
}
}
Затем в файле MXML, где определяется ваш DataGrid, вам нужно создать функцию, которая будет окрашивать ячейку, которая будет вашим backgroundColorFunction.
<mx:Script>
<![CDATA[
public function cellColorFunction(... args):void
{
var item:Object=args[0];
var g:Graphics=args[1] as Graphics;
var width:Number=args[2] as Number;
var height:Number=args[3] as Number;
g.clear();
if (grid.isItemSelected(item) || grid.isItemHighlighted(item))
return;
if (item.flag == 1)
{
g.beginFill(0xE2E2E2);
g.drawRect(0, 0, width, height + 4);
g.endFill();
}
}
]]>
</mx:Script>
Затем вам необходимо определить средство визуализации элементов на вашей клетке gridColumn, и все.
<mx:DataGridColumn itemRenderer="path.to.your.DynamicItemRenderer"/>
Это лучшее решение, с которым я столкнулся. Если кто-нибудь знает лучший способ, я бы хотел его увидеть :)
Я использую пользовательский datagrid, поэтому он будет работать и на нем? \t \t <элементы управления: столбцы> элементы управления: столбцы> управления: MDataGrid> –
anshul
@anshul Если ваш Класс MDataGridColumn расширяет DataGridColumn, тогда все должно быть хорошо. – Franz1986
: Я создал файл класса DynamicItemRenderer.as и поместил ur-метод и импортировал этот файл в файл mxml. когда я использовал этот код , он дает ошибку "Функциональность DynamicItemRenderer не может быть найдена". Я также попытался использовать этот путь , но он не с той же ошибкой. Пожалуйста, предложите или есть какие-либо простое решение для цвета сетки row.I является новым в Flex. –
anshul