Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Encore un problème de treeview personnalisée

Envoyé par : papy

Date : 10/08/2006 16:21

Bonjour,

ca fait plusieurs heures que je me tire les cheveux à essayer de faire fonctionner correctement la méthode hasNextSibling qui est responsable de l'affichage des traits pour lier les différents items, mais sans trop de résultats. Enfin je suis un peu difficile, ca fonctionne presque dans tout les cas.

J'ai fini par dumper tout ce qui passait par cette fonction pour voir si c'était mon code qui posait un probleme, mais apparement non, c'est juste que la fonction n'est pas apellée à l'endroit des traits manquant...

Je colle ici tout ce qui concerne ce problème parce que je dois avouer que la je sèche complètement, je ne vois plus quoi essayer.

Voila ma fonction hasNextSibling. this.infos est un tableau d'objet contenant des informations pour simplifier les traitements dans la vue hierarchique. La propriété nextSibling de ces objets indique le prochain frère de ce noeud, -1 si il n'en a pas :

TreeHierarchicalView.prototype.hasNextSibling = function(rowIdx, afterIdx) {
        try {
                dumpln('ligne '+rowIdx+' ('+this.infos[rowIdx].elt.getName()+') hasNextSibling('+afterIdx+') = '+(this.infos[rowIdx].nextSibling >= afterIdx));

                if(this.infos[rowIdx].nextSibling >= afterIdx)
                        return true;
                else
                        return false;
        } catch(e) {
                dumpException(e);
                return false;
        }               
}       

ma structure représentée en arbre (ce qui devrait s'afficher):

- calanque
  |+ Groupe MSF
  |- Mini PC
  |   | test groupe 1
  |   | encore un test
  |- prolibre
  |   | test groupe 1
  |   | reggie
  |...

ce qui s'affiche :

- calanque
  |+ Groupe MSF
  |- Mini PC
     | test groupe 1
     | encore un test
  |- prolibre
  |   | test groupe 1
  |   | reggie
  |...

et enfin la sortie du dump :

ligne 1 (Groupe MSF) hasNextSibling(1) = true
ligne 2 (Mini PC) hasNextSibling(2) = true
ligne 3 (test groupe 1) hasNextSibling(3) = true
ligne 4 (encore un test) hasNextSibling(3) = false
ligne 4 (encore un test) hasNextSibling(4) = false
ligne 4 (encore un test) hasNextSibling(4) = false
ligne 5 (prolibre) hasNextSibling(5) = false
ligne 6 (test groupe 1) hasNextSibling(6) = true
ligne 5 (prolibre) hasNextSibling(6) = false
ligne 7 (reggie) hasNextSibling(7) = false
ligne 5 (prolibre) hasNextSibling(7) = false
ligne 9 (Servers) hasNextSibling(9) = true
ligne 10 (caraibe) hasNextSibling(10) = false
ligne 12 (test groupe 1) hasNextSibling(12) = true
ligne 13 (encore un test) hasNextSibling(13) = false
ligne 15 (test groupe 1) hasNextSibling(15) = true
ligne 16 (reggie) hasNextSibling(16) = false

J'ai vérifier plusieurs fois et dans plusieurs cas le dump, les informations contenues dans le tableau this.infos sont correctes. Sur le dump on peut voir que la ligne d'indice 2 (Mini PC) a bien un frère, mais il ne demande pas pour la suite, et c'est ici que se trouve mon problème. Pour quelle raison est ce que gecko ne fait pas les appels suivant pour savoir si elle a d'autre frère. Pour les autres noeud ceci est fait, pas ici...

Une petite précision qui peut avoir son importance aussi, quand j'ouvre le groupe Groupe MSF, les traits apparaissent bien à cotè des fils de Mini PC, quand je le referme ca ne remarche plus.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

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.