<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:extension="extension.*" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            import mx.controls.DataGrid;    
            import mx.collections.ArrayCollection;
             // ----- Example with ArrayCollection -----
             private function selectSeverityColor1(datagrid:DataGrid, rowIndex:int, color:uint):uint
             {
                var rColor:uint;
                var item:Object =  datagrid.dataProvider.getItemAt(rowIndex);
                var value:String = item["severity"];
                if (value == "Critical") { rColor = 0xFF00FF; }
                else if (value == "Major") { rColor = 0xFF0000; }
                else rColor =color;
                return rColor;
             }
             
             private function selectSeverityColor2(datagrid:DataGrid, rowIndex:int, color:uint):uint
             {
                var rColor:uint;
                var item:Object =  datagrid.dataProvider.getItemAt(rowIndex);
                var value:String = item["severity"];
                if (value == "Minor") { rColor = 0xFFFF00; }
                else if (value == "Warning") { rColor = 0xFFA500; }
                else rColor =color;
                return rColor;
             }
             // ----- Example with XML -----
             private function selectSeverityColorXML1(datagrid:DataGrid, dataIndex:int, color:uint):uint
             {
                var rColor:uint;
                var item:XML =  datagrid.dataProvider.getItemAt(dataIndex);
                var value:String = item.attribute("severity");
                if (value == "Critical") { rColor = 0xFF00FF; }
                else if (value == "Major") { rColor = 0xFF0000; }
                else rColor =color;
                return rColor;
             }
             private function selectSeverityColorXML2(datagrid:DataGrid, dataIndex:int, color:uint):uint
             {
                var rColor:uint;
                var item:XML =  datagrid.dataProvider.getItemAt(dataIndex);
                var value:String = item.attribute("severity");
                if (value == "Minor") { rColor = 0xFFFF00; }
                else if (value == "Warning") { rColor = 0xFFA500; }
                else rColor =color;
                return rColor;
             }
                                       
            [Bindable]                
            private var myDP:ArrayCollection = new ArrayCollection([
                {name:"Order #2314", severity:"Critical"},
                {name:"Order #2315", severity:""},
                {name:"Order #2316", severity:"Warning"},
                {name:"Order #2317", severity:"Major"},
                {name:"Order #2318", severity:""},
                {name:"Order #222", severity:"Minor"}
                ]);                    

            private var flip:int = 1;
               private function doChangeColorFunction(event:Event):void  
            {
                flip = 1 - flip;
                mydg1.rowColorFunction = (flip == 1 ? selectSeverityColor1 : selectSeverityColor2);
                mydg2.rowColorFunction = (flip == 1 ? selectSeverityColorXML1 : selectSeverityColorXML2);
            }
        ]]>
    </mx:Script>    
      <!-- Exemple 1 With ArrayCollection -->   
     <extension:RowColorDataGrid id="mydg1" width="50%" height="50%" dataProvider="{myDP}"
         alternatingItemColors="[#FFFFFF, #EEEEEE]" rowColorFunction="selectSeverityColor1">
         <extension:columns>
                   <mx:DataGridColumn headerText="Order" dataField="name"  />
                   <mx:DataGridColumn headerText="Severity" dataField="severity"  />
        </extension:columns>    
    </extension:RowColorDataGrid>
        
     <!-- Exemple 2 with XML -->
     <mx:XML id="myXML" format="e4x">
         <events>
          <event severity="Major" name="Commande 1234" />
          <event severity="Critical" name="Commande 2789" />
          <event severity="" name="Commande 7845" />
          <event severity="Warning" name="Commande 5642" />
          <event severity="Minor" name="Commande 7851" />
        </events>
    </mx:XML>

    <extension:RowColorDataGrid id="mydg2" width="50%" height="50%" editable="true" dataProvider="{myXML..event}"  
         rowColorFunction="selectSeverityColorXML1">
         <extension:columns>
                   <mx:DataGridColumn headerText="Commande" dataField="@name"  />
                   <mx:DataGridColumn headerText="Sévérité" dataField="@severity"  />
        </extension:columns>        
    </extension:RowColorDataGrid>
    <mx:Button label="Change RowColor Function" click="doChangeColorFunction(event)"/>
    
    <mx:Label text="(Right Click to View Source)">
        
    </mx:Label>
</mx:Application>