         return contentHeight;
     }
     
+    /**
+     *  Returns the sum of the typical cell widths including gaps.  If 
+	 *  columnCountOverride is specified, then the overall typicalCellWidth 
+     *  of as many columns is returned. 
+     */
+    public function getTypicalContentWidth(columnCountOverride:int = -1):Number
+    {
+        const nCols:int = (columnCountOverride == -1) ? columnCount : columnCountOverride;
+        var contentWidth:Number = 0;
+        
+        for (var columnIndex:int = 0; columnIndex < nCols; columnIndex++)
+        {
+            var width:Number = typicalCellWidths[columnIndex];
+            contentWidth += isNaN(width) ? defaultColumnWidth : width;
+        }
+        
+        if (nCols > 1)
+            contentWidth += (nCols - 1) * columnGap;
+
+        return contentWidth;
+    }
+        
     /**
      *  Return the preferred bounds width of the grid's typicalItem when rendered with the item renderer 
      *  for the specified column.  If no value has yet been specified, return NaN.

        if (!_columnWidths)
            return (nCols * (defaultColumnWidth + columnGap)) - columnGap;
        
        var width:Number = 0;
        
        for (var i:int = 0; i < nCols; i++)
        {
            if ((i >= _columnWidths.length) || isNaN(_columnWidths[i]))
                width += defaultColumnWidth + columnGap;
            else
                width += _columnWidths[i] + columnGap;
        }
        
        return width - columnGap;
    }
    
    /**

        this.rowCount = IList(event.target).length;
        return true;
    }
    
    /**
     *  @private
     */
    private function dataProviderCollectionRefresh(event:CollectionEvent):Boolean
    {
        clear();
        this.rowCount = IList(event.target).length;
        return true;
    }    
}
}