             if (newDataProvider)
                 newDataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, dataProvider_collectionChangeHandler, false, 0, true);        
             
+            dataProviderChanged = true;
+            invalidateProperties();
             invalidateSize();
             invalidateDisplayList();
-            
-            //TBD: clear selection
-            gridDimensions.clear();
-            if (_dataProvider)
-                gridDimensions.rowCount = _dataProvider.length;
             
             dispatchChangeEvent("dataProviderChanged");        
         }

            {
                dispatchCaretChangeEvent();
                caretChanged = false;
            }
        }
        

        //----------------------------------
        
        private var _dataProvider:IList = null;
        private var dataProviderChanged:Boolean;
        
        [Bindable("dataProviderChanged")]
        
