         // Invalid row or column.
         if (dataItem == null || column == null)
             return null;
+
+        // column is GridColumn.visible==false
+        if (!column.visible)
+            return null;
                 
         const factory:IFactory = itemToRenderer(column, dataItem);
         const renderer:IGridItemRenderer = factory.newInstance() as IGridItemRenderer;

                if (!renderer)
                {       
                    var dataItem:Object = getDataProviderItem(rowIndex);
                    var column:GridColumn = getGridColumn(colIndex);
                    var factory:IFactory = itemToRenderer(column, dataItem);
                    renderer = allocateGridElement(factory) as IGridItemRenderer;                   
                }

                performanceStatistics.updateDisplayListStartTime = startTime;
        }
        
        const columns:IList = grid.columns;
        if (!columns)
            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
        
        oldVisibleRowIndices = visibleRowIndices;
