Change background color of specific rows for a Spark DataGrid

Change background color of specific rows where value in a cell matches the string “sample”.

1<fx:Script>
2    <![CDATA[
3        import mx.core.ClassFactory;           
4        import spark.skins.spark.DefaultGridItemRenderer;          
5 
6        private function test_itemRendererFunction(item:Object, column:GridColumn):ClassFactory {
7            if (item == null) {
8                return new ClassFactory(DefaultGridItemRenderer);
9            } else {
10                // if(item.d1=="sample")
11                if(item[column.dataField]=="sample") {
12                    return new ClassFactory(GrayGridItemRenderer);                     
13                } else {
14                    return new ClassFactory(DefaultGridItemRenderer);
15                }
16            }
17        }          
18    ]]>
19</fx:Script>
20 
21<s:DataGrid>
22    <s:columns>
23        <s:ArrayList>
24            <s:GridColumn dataField="d1" headerText="h1" itemRendererFunction="test_itemRendererFunction"></s:GridColumn>
25            <s:GridColumn dataField="d2" headerText="h2" itemRendererFunction="test_itemRendererFunction"></s:GridColumn>
26            <s:GridColumn dataField="d3" headerText="h3" itemRendererFunction="test_itemRendererFunction"></s:GridColumn>
27        </s:ArrayList>
28    </s:columns>
29</s:DataGrid>

GrayGridItemRenderer.mxml

1<?xml version="1.0" encoding="utf-8"?>
2<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
3                    xmlns:s="library://ns.adobe.com/flex/spark"
4                    xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
5    <fx:Script>
6        <![CDATA[
7            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
8                super.updateDisplayList(unscaledWidth, unscaledHeight);
9                if (data && data[column.dataField]!=''){
10                    lblData.text = data[column.dataField];     
11                }
12            }
13        ]]>
14    </fx:Script>
15    <s:Rect top="0" bottom="0" right="0" left="0">
16        <s:fill>
17            <s:SolidColor color="#E0E0E0" alpha="0.5"/>
18        </s:fill>
19    </s:Rect>
20    <s:Label id="lblData" top="7" left="7" bottom="5" color="0x000000" alpha="0.5"/> 
21</s:GridItemRenderer>

Sort as a numeric type String for a Spark DataGrid in Flex 4

correct: 1,2,3,4,11,12,21
incorrect: 1,11,12,2,21,3,4

1private function sortCompareFunction(obj1:Object, obj2:Object, column:GridColumn): int {
2    var p1:Number = obj1[column.dataField];
3    var p2:Number = obj2[column.dataField];
4 
5    if (p1 < p2){
6        return -1;
7    } else if (p1 > p2){
8        return 1;
9    } else {
10        return 0;
11    }
12}
1<s:DataGrid>
2    <s:columns>
3        <s:ArrayList>
4            <s:GridColumn dataField="d1" headerText="h1" sortCompareFunction="sortCompareFunction"/>
5            <s:GridColumn dataField="d2" headerText="h2" sortCompareFunction="sortCompareFunction"/>
6            <s:GridColumn dataField="d3" headerText="h3" sortCompareFunction="sortCompareFunction"/>
7        </s:ArrayList>
8    </s:columns>
9</s:DataGrid>