      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    public var dataField:String;
+     public function get dataField():String
+     {
+          return _dataField;
+     }
+
+     /**
+      *  @private
+      */
+     public function set dataField(value:String):void
+     {
+        _dataField = value;
+  
+        if ( value.indexOf( "." ) != -1 ) 
+        {
+            hasComplexFieldName = true;
+            complexFieldNameComponents = value.split( "." );
+            
+            if ( _sortCompareFunction == null ) 
+            {
+                //if the sort field is null, but the user supplied a complex dataField, we will assign a generic
+                //sort compare that handles this situation. It will yield identical results to the sort created in
+                //datagrid under normal circumstances
+                
+                //intentionally not using the setter, the user might still override this or be looking for that change
+                //we want to this to be purely happen behind the scenes if there is no function provided
+                _sortCompareFunction = complexColumnSortCompare;
+            }
+            
+        }
+
+        if (owner)
+            owner.invalidateList();
+     }
 
     //----------------------------------
     //  dataTipField

     */
    private var cachedEmbeddedFont:EmbeddedFont = null;
         
    //--------------------------------------------------------------------------
    //
    //  Overridden properties

        {
            try
            {
                if ( !hasComplexFieldName ) 
                    data = data[dataField];
                else 
                    data = deriveComplexColumnData( data );
            }
            catch(e:Error)
            {
