             }
             else if (ce.kind == CollectionEventKind.REFRESH)
             {
-                setSelectedIndex(NO_SELECTION, false);
-                setCurrentCaretIndex(NO_CARET);
+                dataProviderRefreshed();
             }
             else if (ce.kind == CollectionEventKind.REPLACE ||
                 ce.kind == CollectionEventKind.MOVE)

        _caretIndex = value;
        
        if (caretIndex != CUSTOM_SELECTED_ITEM)
            itemShowingCaret(caretIndex, true);
    }
    
    /**

    mx_internal var doingWholesaleChanges:Boolean = false;
    
    //----------------------------------
    //  caretItem
    //---------------------------------- 

    /**
     *  @private
     *  This private variable differs from selectedItem in that
     *  the value is not computed, it's cached each time setCurrentCaretIndex() is called.  
     *  It's used by List/dataProviderRefreshed() to provide a little scroll position and 
     *  selection/caret stability after a dataProvider refresh.
     */
    mx_internal var caretItem:* = undefined;
    
    //----------------------------------
    //  labelField
    //----------------------------------

