Bonjour,
J'ai créé un arbre jstree à l'aide d'un json.
Cet arbre peut être modifié: déplacement de répertoire, renommage, ajout de répertoire.
Le but étant de conserver l'état modifié en BD, à chaque modification une requête ajax est lancée pour stocker la modification.
Par exemple pour le renommage
Jusque là pas de problème. Par contre quand je crée un répertoire, ça devient plus délicat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $('#tree-container').bind("rename_node.jstree", function (e, data) { node=data.node; // alert("rename:"+node.text); $.post("rename.php",{'id':node.id,'n':node.text}, function(data) { $('#tree-container').jstree(true).refresh(); }) })
En effet, la fonction création est en fait décomposée en:
1- creer le répertoire qui aura pour nom "new node"
2- renommer le repertoire new node avec ce qu'a mis l'utilisateur
Ma fonction create va donc juste creer un id en BD, qui sera retourné à jstree (ça, ça marche, je vois bien passer mes variables dans la console), puis la fonction rename va associer le nom au dossier portant cet id. Malheureusement la fonction rename envoie le nom primaire et non celui qui a été tapé et qui est manifestement perdu après l'appel ajax de la fonction create. Y a -t-il un moyen de stocker ce nom pour le reinjecter ensuite ?
Voici le code de la fonction create
Merci !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $('#tree-container').bind("create_node.jstree", function (e, data) { node=data.node; //alert("create:"+node.text); $.post("create.php",{'n':node.text,'parent':node.parent}, function(data) { data = JSON.parse(data); node.id=data.id; //pb: le nouveau nom n'est pas enregistre dans l'appel rename qui suit }) })
Partager