Comment obtenir le texte actuellement sélectionné dans un arbre ?

Écrit par Neil Deakin. Traduit par Alain B. (15/07/2005).
Page originale : http://www.xulplanet.com/tutorials/xulqa/q_treeselect.html xulplanet.com

Pour obtenir le texte de la cellule sélectionnée dans un arbre, utilisez le code suivant :


tree.view.getCellText(tree.currentIndex,column)

La propriété currentIndex de l'arbre contient l'index de la ligne sélectionnée de l'arbre. Passez cette ligne, en complément de l'identifiant id de la colonne, à la fonction getCellValue. Notez que la ligne est un nombre tandis que la colonne est un identifiant, et spécifiquement, l'identifiant de l'élément treecol.

Utilisez l'attribut onselect sur l'élément tree pour lancer un script lorsque une ligne est sélectionnée. L'exemple suivant vous montre comment la sélection d'une ligne affichera le texte de la cellule correspondante dans un libellé situé au dessus.

Voir

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="treeSelect" title="Selection dans un arbre"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script>
function doSelect(event)
{
  // l'arbre est la cible (target) de l'évènement (event)
  var tree=event.target;

  // récupère l'élément label
  var label=document.getElementById("selectedLabel");

  // récupère le texte de la colonne 'description' sur la ligne sélectionnée.
  // Il faut appeler la fonction getCellText de l'objet de vue d'arbre.
  // Nous devons fournir deux paramètres, l'index de la ligne sélectionnée contenu
  // dans la propriété currentIndex de l'objet tree et l'id de la colonne.
  var txt=tree.view.getCellText(tree.currentIndex,"description")

  // assigne le texte au libellé.
  label.setAttribute("value",txt);
}

</script>

<hbox>
  <label value="Partie sélectionnée :"/>
  <label id="selectedLabel" value=""/>
</hbox>

<tree flex="1" width="350" height="200" onselect="doSelect(event);">
  <treecols>
    <treecol id="part" label="Numéro de partie" primary="true" flex="1"/>
    <treecol id="description" label="Description" flex="1"/>
  </treecols>

  <treechildren>
    <treeitem>
      <treerow>
        <treecell label="I68-023"/>
        <treecell label="Flux Capacitor"/>
      </treerow>
    </treeitem>
    <treeitem>
      <treerow>
        <treecell label="P34-912"/>
        <treecell label="Continuum Transfunctioner"/>
      </treerow>
    </treeitem>
    <treeitem>
      <treerow>
        <treecell label="Z29-307"/>
        <treecell label="Deluxe Transmogrifier"/>
      </treerow>
    </treeitem>
  </treechildren>
</tree>


</window>

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.