Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/09/2011, 12h34   #1
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Par défaut 1.6.1 dijit.tree Sélectionner un noeud

Bonjour,

je cherche comment sélectionner un noeud.


J'ai essayé tour à tour des instructions que j'ai lu sur le web ; à savoir les suivantes :

Code :
1
2
3
4
5
6
7
noeud.selected = true; noeud.focused = true;
 
arbre.set("path", "Titi1/Titi11/Titi111");
 
arbre.set("path", ["Titi1", "Titi11", "Titi111"]);
 
arbre.focusNode(noeud);
Mais elles n'ont aucun effet.


En vous remerciant de m'aider.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 12h21   #2
Membre habitué
 
Homme Bernard Le Roux
Développeur informatique
Inscription : octobre 2005
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Bernard Le Roux
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : octobre 2005
Messages : 128
Points : 136
Points : 136
il faudrait un plus de code et les données;
sinon, le principe est bon et doit fonctionner.
Le Roux B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 10h31   #3
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Ok, j'ai crée un code tout simple où je tente de sélectionner un noeud.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<html>
 
<head>
<link rel="stylesheet" type="text/css" href="scripts/dojo-release-1.6.1/dijit/themes/claro/claro.css"> </link>
<link rel="stylesheet" type="text/css" href="scripts/dojo-release-1.6.1/dijit/themes/claro/tree.css"> </link>
<script type="text/javascript" src="scripts/dojo-release-1.6.1/dojo/dojo.js"> </script>
 
<script type="text/javascript">
 
   function Afficher()
   {
      dojo.require("dijit.dijit");
 
      dojo.require("dojo.data.ItemFileReadStore");
      dojo.require("dijit.tree.ForestStoreModel");
      dojo.require("dijit.Tree");
 
      var node = dojo.byId('idConteneur');
 
      var rawdata = [
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ];
 
      var store = new dojo.data.ItemFileReadStore(
         {
               data: {
                   label: 'label',
                   items: rawdata
               }
         }
 
      );
 
      var treeModel = new dijit.tree.ForestStoreModel({
               //rootId: "root",
               rootLabel: 'TitiRoot',
               childrenAttrs: ['children'],
               store: store
           });
 
      var treeControl = new dijit.Tree({
            model: treeModel,
            autoExpand:true
           });
 
 
      node.appendChild(treeControl.domNode);
 
      //Je récupère les children de "TitiRoot".
      //J'ai remarqué que getChildren() ne renvoi que les enfants directs
      //alors que getDescendants() renvoi tous les enfants.
      var noeuds = treeControl.rootNode.getDescendants();
 
      var noeud = noeuds[1];//<= Je souhaite sélectionner le treenode "Titi".
 
      //Pour sélectionner un noeud, j'ai essayé chacune des 4 instructions ci-dessous.
      //Et aucune ne fonctionne.
      treeControl.focusNode(noeud);
      //noeud.selected = true; noeud.focused = true;
      //treeControl.set("path", "TitiRoot/Titi/Titi1");
      //treeControl.set("path", ["TitiRoot", "Titi", "Titi1"]);
   }
 
</script>
 
</head>
 
 
<body class='claro'>
 
<div id="idTester">
   <button type="button" onclick="Afficher()"> Afficher arbre </button>
</div>
 
<div id="idConteneur">
</div>
 
</body>
 
</html>
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h45   #4
Membre habitué
 
Homme Bernard Le Roux
Développeur informatique
Inscription : octobre 2005
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Bernard Le Roux
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : octobre 2005
Messages : 128
Points : 136
Points : 136
j'ai un problème avec l'éditeur. je n'arrive pas à fait un copier/coller ...

Pour que ça fonctionne, il faut :
- ajouter 1 ligne entre la ligne 30 et 31 : identifier :'label'

- retirer le commentaire à ligne 38 et mettre TitiRoot au lieu de root

- mettre en commentaire les lignes 55,57,61

- retirer le commentaire ligne 64

raison : on fait la recherche sur les id et non sur les labels. Donc, on indique que les label est un identificateur (la ligne que l'on ajoute) et on en donne un pour la racine qui est le même que le label.
Le Roux B. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/10/2011, 11h34   #5
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Oui oui en fait je m'en suis rendu compte qu'il fallait taper sur les id.

Je trouve étonnant que le label ne soit pas un id. A un même niveau d'arborescence, on peut donc avoir plusieurs noeuds avec le même label mais avec des id différents.

Et donc, à l'affichage, on peut avoir des noeuds en double.

Enfin bref. Merci.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 11h44   #6
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Et pour info, j'avais besoin de pouvoir sélectionner un noeud sans connaître son path ; en disposant uniquement de l'objet node.
En fait, à partir de l'objet node, on peut se débrouiller pour récupérer le path du node.

Voilà comment, je m'y suis pris :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//On suppose que node et treeControl sont des variables déjà connues.
 
var pathNode = getTreeNodePath(node);
treeControl.set('path', pathNode);
 
function getTreeNodePath(node)
{
   var path = new Array;
   var objPath = node.getTreePath();
 
   path[0] = objPath[0].id;//Le 1er id est une chaine.
 
   for(var i=1; i < objPath.length; i++)
     //Les id suivants sont des tableaux de une chaine. Mystère ?
      path[i] = objPath[i].id[0];
 
   return path;
}
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h38.


 
 
 
 
Partenaires

Hébergement Web