 
         if (typeof(data) == "object" || typeof(data) == "xml")
         {
-            try
-            {
-                if (!hasComplexFieldName) 
-                	data = data[dataField];
-                else 
-                    data = deriveComplexColumnData(data);
-            }
-            catch(e:Error)
-            {
-                data = null;
-            }
+            if (hasComplexFieldName)
+			{
+				data = deriveComplexColumnData(data);
+			}
+			else if (dataField != null)
+			{
+				if (dataField in data)
+	            	data = data[dataField];
+	            else 
+					data = null;
+			}
         }
 
         if (data is String)

            var field:String = dataTipField;
            if (!field)
                field = owner.dataTipField;
            try
            {
                if (data[field] != null)
                    data = data[field];
                else if (data[dataField] != null)
                    data = data[dataField];
            }
            catch(e:Error)
            {
                data = null;
            }
        }

        if (data is String)

    /**
     * @private
     */
    protected function deriveComplexColumnData(data:Object):Object 
    {
        var currentRef:Object = data;
		var length:int = complexFieldNameComponents.length
		
        if (complexFieldNameComponents) 
        {
            for (var i:int=0; currentRef && i < length; i++)
                currentRef = currentRef[complexFieldNameComponents[i]];
        }
        
        return currentRef?currentRef:"";
