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); }