Tree

Aufklappen/Zuklappen aller Baumknoten

Um alle Baumknoten aufzuklappen:

 var treeView = tree.treeBoxObject.view;
 for (var i = 0; i < treeView.rowCount; i++) {
   if (treeView.isContainer(i) && !treeView.isContainerOpen(i))
     treeView.toggleOpenState(i);
 }

Um alle Baumknoten zu zuklappen, wird die Bedingung einfach umgekehrt:

 var treeView = tree.treeBoxObject.view;
 for (var i = 0; i < treeView.rowCount; i++) {
   if (treeView.isContainer(i) && treeView.isContainerOpen(i))
     treeView.toggleOpenState(i);
 }

Text der ausgewählten Zeile abrufen

Ausgehend von gegebenem Baum:

 <tree id="my-tree" seltype="single" onselect="onTreeSelected()">

Wird das folgende JavaScript verwendet:

 function onTreeSelected(){
   var tree = document.getElementById("my-tree");
   var cellIndex = 0;
   var cellText = tree.view.getCellText(tree.currentIndex, tree.columns.getColumnAt(cellIndex));
   alert(cellText);
 }

Das Baum-Item einer fokussierten Zeile abrufen

Ausgehend von <tree id="my-tree">, kann der folgende Codeausschnitt verwendet werden, um das tree item abzurufen:

var view = document.getElementById("my-tree").view;
var sel = view.selection.currentIndex; //returns -1 if the tree is not focused
var treeItem = view.getItemAtIndex(sel);

Zu beachten ist, dass der aktuelle Index unter Umständen nicht ausgewählt sein (z.B. in einem Baum mit mehrfach-Auswahl).

Einen treecell von einem Mausklick abrufen

Die erste Wahl ist <treecell onclick="yourfunc();"/> oder etwas ähnliches auszuprobieren. das funktioniert nicht. Es können keine Event-Handler zum <treecell> Element hinzugefügt werden. Stattdessen kann ein Event-Handler zum <tree> Element hinzugefügt werden. Dann können event- und andere Methoden benutzt werden, um das <treecell> Element zu finden. Zum Beispiel, ausgehend von:

<tree id="my-tree" onclick="onTreeClicked(event)">

Wird das folgende JavaScript verwendet:

function onTreeClicked(event){
  var tree = document.getElementById("my-tree");
  var tbo = tree.treeBoxObject;

  // get the row, col and child element at the point
  var row = { }, col = { }, child = { };
  tbo.getCellAt(event.clientX, event.clientY, row, col, child);

  var cellText = tree.view.getCellText(row.value, col.value);
  alert(cellText);
}

Ausgewählte Indizes eines mehrfach ausgewählten Baumes abrufen

  var start = {}, end = {}, numRanges = tree.view.selection.getRangeCount(), selectedIndices = [];

  for (var t = 0; t < numRanges; t++){
    tree.view.selection.getRangeAt(t, start, end);
    for (var v = start.value; v <= end.value; v++)
      selectedIndices.push(v);
  }

Weitere Ressourcen

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: fscholz, Mrolappe
 Zuletzt aktualisiert von: fscholz,