                     // clearing the gridDimensions resets rowCount
                     if (_dataProvider)
                         gridDimensions.rowCount = _dataProvider.length;
-                    if (_columns)
+                    if (columnsChanged && _columns)
                         gridDimensions.columnCount = _columns.length;
                 }
                 

            invalidateProperties();
            invalidateSize();
            invalidateDisplayList();

            gridDimensions.clear();
            if (_columns)
                gridDimensions.columnCount = _columns.length;
            if (_dataProvider) // clearing the gridDimensions resets rowCount
                gridDimensions.rowCount = _dataProvider.length;
            
            dispatchChangeEvent("columnsChanged");        
        }

            invalidateProperties();
            invalidateSize();
            invalidateDisplayList();
            
            dispatchChangeEvent("dataProviderChanged");        
        }
