     public function get sortField():SortField
     {
         const column:GridColumn = this;
-        const sortField:SortField = new SortField(column.dataField);
+        const sortField:SortField = new SortField(dataField);
+        var cF:Function = null;
         
         if (_sortCompareFunction != null)
         {
-            sortField.compareFunction =
-                function (a:Object, b:Object):int
+            cF = function (a:Object, b:Object):int
+            { 
+                return _sortCompareFunction(a, b, column);
+            };       
+        }
+        else
+        {
+            if (dataFieldPath.length > 1)
+            {
+                // use custom compare function for a complex dataField if one isn't provided.
+                cF = function (a:Object, b:Object):int
                 { 
-                    return _sortCompareFunction(a, b, column);
+                    return dataFieldPathSortCompare(a, b, column);
                 };
-        }
-        else if (column.dataField == null && _labelFunction != null)
-        {
-            sortField.compareFunction =
-                function (a:Object, b:Object):int
+            }
+            else if (dataField == null && _labelFunction != null)
+            {
+                // use basic string compare on the labelFunction results
+                cF = function (a:Object, b:Object):int
                 { 
                     return ObjectUtil.stringCompare(_labelFunction(a, column), _labelFunction(b, column));
                 };
+            }
         }
         
+        sortField.compareFunction = cF;
         sortField.descending = column.sortDescending;
         return sortField;
     }

            _defaultItemEditorFactory = new ClassFactory(DefaultGridItemEditor);
        return _defaultItemEditorFactory;
    }

    //--------------------------------------------------------------------------
    //

        else if (value.indexOf( "." ) != -1) 
        {
            dataFieldPath = value.split(".");
        }
        else
        {
