Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am using ArcObjects 10.1 (.NET) to customize ArcCatalog: adding new nodes in catalog tree like in the Esri's example. But when I add new child node to already expanded parent, it doesn't show up in tree. Actually, catalog tree node never updates again after being expanded.

Any solutions?

Tried this solution, but it doesn't work.

share|improve this question

3 Answers 3

I developed the following code that would refresh the Folder Connection in the Catalog window in ArcMap, this may help?

' Refresh Catalog Window (if open)
Dim pDockableWindowManager As IDockableWindowManager
pDockableWindowManager = My.ArcMap.DockableWindowManager

Dim sUID As UID
sUID = New UID
sUID.Value = "{7F09BEFF-4F85-48A2-A3DC-39430262799E}" 'GxBrowserDockWindow

Dim pDockableWindow As IDockableWindow
pDockableWindow = pDockableWindowManager.GetDockableWindow(sUID)

If pDockableWindow.IsVisible Then
    ' Get Browser
    Dim pGXBrowser As IGxBrowser
    pGXBrowser = pDockableWindow.UserData

    ' Get the Catalog
    Dim pGXCatalog As IGxCatalog
    pGXCatalog = pGXBrowser.InternalCatalog

    ' QI Catalog into GXObject
     Dim pGXObject As IGxObject
    pGXObject = DirectCast(pGXCatalog, IGxObject)

     ' QI GxObject into GxObjectContainer
     Dim pGxObjectContainer As IGxObjectContainer
     pGxObjectContainer = DirectCast(pGXObject, IGxObjectContainer)

     ' Get Gxobjects as an enumerate
     Dim pEnumGxObject As IEnumGxObject
     pEnumGxObject = pGxObjectContainer.Children

     ' Cycle through objects until we find the Folder Connections, then break out of loop
     Dim pGxObject2 As IGxObject
     pGxObject2 = pEnumGxObject.Next
     Do While Not pGxObject2 Is Nothing
        If TypeOf pGxObject2 Is IGxFolderConnections Then
           Exit Do
        End If
        pGxObject2 = pEnumGxObject.Next
     Loop

     ' Re-point GxObjectContainer to folder connection GxObject and refresh all
     pGxObjectContainer = DirectCast(pGxObject2, IGxObjectContainer)
     pEnumGxObject = pGxObjectContainer.Children
     pGxObject2 = pEnumGxObject.Next
     Do While Not pGxObject2 Is Nothing
          pGxObject2.Refresh()
          pGxObject2 = pEnumGxObject.Next
     Loop
 End If 
share|improve this answer

Arccatalog tree doesn't refresh on it's own. Right click on the added tree item and select refresh.

share|improve this answer
1  
My custom tree nodes don't have context menus. But it is possible to force refresh by pressing F5 on the node (checked in debug). After that tree is not refreshed, but on the tab "Contents" everything is ok. See my screenshots and code in the ArcGIS forum post. –  Ilya Solovyev Mar 25 '13 at 4:20

In Refresh method just call ObjectRefreshed(...) on the IGxCatalog object that you got with the Attach method.

private IGxCatalog _catalog;
// ...
public void Attach(..., IGxCatalog pCatalog)
{
    // ...
    _catalog = pCatalog;
    // ...
}
// ...
public void Refresh()
{
    // ...
    _catalog.ObjectRefreshed(this);
    // ...
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.