Skip to main content
K.Daube
Community Expert
Community Expert
Feb 14, 2020 10:35 AM UTC
Answered

Collapsing a TreeView

Dear friends,

My script to expand all nodes works fine. The contrary function to collapse all nodes, does not behave:

  • This is the starting point, the tree is generated an the top nodes are closed
  • Using button Expand makes the whole tree visible
  • As long as the whole tree is visible, using Collapse works correctly
  • If only part of the tree is visible and Collapse is used, nothing happens:

→ What could be wrong with FunCollapseAll?

function FunExpandAll(oTree) { // --- recursively used
// Reference    Peter Kahrel
var j, branches;
  oTree.expanded = true;
  branches = oTree.items;
  for (var j = 0; j < branches.length; j++) {
    if (branches[j].type == 'node') {
      FunExpandAll (branches[j]);
    }
  }
} // end of FunExpandAll

function FunCollapseAll(oTree) { // --- recursively used
var j, branches;
  oTree.expanded = false;
  branches = oTree.items;
  for (var j = 0; j < branches.length; j++) {
    if (branches[j].type == 'node') {
      FunCollapseAll (branches[j]);
    }
  }
} // end of FunCollapseAll

 

This topic is closed to new replies. Start a new post to keep the conversation going.
K.Daube
K.DaubeCorrect answer
Community Expert
Feb 14, 2020 1:51 PM UTC

The following 'brute force' method works:

// --- behaviour of the buttons
  wDocNav.g1.btnExpand.onClick = function () {
    FunExpandAll(oTree);
  }
  wDocNav.g1.btnCollapse.onClick = function () {
    FunExpandAll(oTree); // to avoid error with partial view
    FunCollapseAll(oTree);
    wDocNav.show();
  }

2 replies

Inspiring
Feb 14, 2020 4:17 PM UTC

I can't try this, but my guess is that you can't collapse a node if it's parent is already collapsed.

 

Is there a way you can work in the opposite direction for collapse?

Fold all of the lowest nodes first and work up the tree?

Translate
K.Daube
Community Expert
K.DaubeCommunity ExpertAuthorCorrect answer
Community Expert
Feb 14, 2020 1:51 PM UTC

The following 'brute force' method works:

// --- behaviour of the buttons
  wDocNav.g1.btnExpand.onClick = function () {
    FunExpandAll(oTree);
  }
  wDocNav.g1.btnCollapse.onClick = function () {
    FunExpandAll(oTree); // to avoid error with partial view
    FunCollapseAll(oTree);
    wDocNav.show();
  }
Translate