Um die markierte Zeile eines XUL Trees auszulesen kann folgender Code verwendet werden
var tree=document.getElementById('adresse-tree'); if(tree.currentIndex>=0) i = tree.currentIndex; else i = 0; col = tree.columns ? tree.columns["adresse-treecol-adresse_id"] : "adresse-treecol-adresse_id"; SelectedID = tree.view.getCellText(i,col);
Wenn es sich um einen Multiselect Tree handelt, in dem mehrere Zeilen auf einmal markiert werden können ist der Code etwas umfangreicher
function getMarkierteAdressen() { var start = new Object(); var end = new Object(); var numRanges = tree.view.selection.getRangeCount(); var data; var anzahl=0; //alle markierten Eintraege holen for (var t = 0; t < numRanges; t++) { tree.view.selection.getRangeAt(t,start,end); for (var v = start.value; v <= end.value; v++) { col = tree.columns ? tree.columns["adresse-treecol-adresse_id"] : "adresse-treecol-adresse_id"; id = tree.view.getCellText(v,col); data[anzahl] = id; anzahl = anzahl+1; } } return data; }
Mit folgender Funktion kann ein Eintrag mit einer bestimmten ID markiert werden
function TreeSelectEntry(SelectedID) { var tree=document.getElementById('adressen-tree'); var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln //In der globalen Variable ist der zu selektierende Eintrag gespeichert if(SelectedID!=null) { for(var i=0;i<items;i++) { //id der row holen col = tree.columns ? tree.columns["adresse-treecol-adresse_id"] : "adresse-treecol-adresse_id"; adresse_id=tree.view.getCellText(i,col); if(adresse_id == SelectedID) { //Zeile markieren tree.view.selection.select(i); //Sicherstellen, dass die Zeile im sichtbaren Bereich liegt tree.treeBoxObject.ensureRowIsVisible(i); return true; } } } }