                 performanceStatistics.updateDisplayListStartTime = startTime;
         }
         
+        // Find the index of the last GridColumn.visible==true column
         const columns:IList = grid.columns;
-        if (!columns)
+        const lastVisibleColumnIndex:int = (columns) ? grid.getPreviousVisibleColumnIndex(grid.columns.length) : -1;
+        if (!columns || lastVisibleColumnIndex < 0)
+        {
+            // HACK: Make sure columnHeaderBar fixes itself
+            var dg:DataGrid = grid.gridOwner as DataGrid;
+            if (dg && dg.columnHeaderBar)
+                dg.columnHeaderBar.invalidateDisplayList();
             return;
-        
-        // Find the index of the last GridColumn.visible==true column
-        
-        const lastVisibleColumnIndex:int = grid.getPreviousVisibleColumnIndex(grid.columns.length);
-        if (lastVisibleColumnIndex < 0)
-            return;
+        }
         
         // Layout the item renderers and compute new values for visibleRowIndices et al
         

            visibleColumnSeparators, oldVisibleColumnIndices, visibleColumnIndices, layoutColumnSeparator, lastVisibleColumnIndex);
        
        // HACK
        var dg:DataGrid = grid.gridOwner as DataGrid;
        if (dg && dg.columnHeaderBar)
            dg.columnHeaderBar.invalidateDisplayList();
        

     */
    private const visibleGridBounds:Rectangle = new Rectangle();
    
    /**
     *  @private
     *  The elements available for reuse.  Maps from an IFactory to a list of the elements 
