IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Mettre à jour un dijit.Tree


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut Mettre à jour un dijit.Tree
    Bonjour,

    Je galère toujours avec mon dijit.Tree et mon JsonRestStore.
    Je voudrais ajouter un noeud à mon Tree. J'ai suivi le tuto ici (chapitre "Programmatic Data Changes").
    J'ai également suivi ce tuto pour la création de mon arbre.

    Je vois bien qu'il est écrit pour dojo 1.6. J'utilise dojo 1.7, est-il compatible ?
    Voici donc comment je procèdes pour le mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var store = this.planItemsStore;
    this.planItemsStore.get(selectedObject.id).then(function(selectedObject){
    	alert("PUSH");
    	// add a new child
    	selectedObject.children.push({
    		name: "New child",
    		id: "new-child-id"
    	});
    	// save it with a put(). The tree will automatically update the UI
    	store.put(selectedObject);
    });
    "PUSH" ne s'affiche jamais. Il ne passe pas dans ma méthode.
    Pour info, "this.planItemsStore.get(selectedObject.id)" renvoi un "[Trial] dojo.Deferred {}" d'après firebug...

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut
    En fait je commences à comprendre (oui il me faut du temps...).
    Quand j'appelle "this.planItemsStore.get(selectedObject.id)", dojo envoi la requête "GET {target}{query}". La requête échouait donc le script s'arrêtait là. C'est pourquoi "PUSH" ne s'affiche jamais.

    J'ai modifié le code en conséquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.planItemsStore.get("ajax-get-items?systemId=" + nodeId).then(function(selectedObject){...}
    Ok maintenant la requête GET est correcte et "PUSH" s'affiche.

    Par contre je viens de comprendre que lorsque que je fais "store.put(selectedObject)", dojo émet une requête "PUT {target}{id}".

    Mon choix de Store n'est peut être pas judicieux dans ce cas. Certes les données renvoyées par le serveur sont au format JSON, mais ce n'est pas du REST.
    Voici les requêtes utilisées pour obtenir/mettre à jour mes items :
    • [GET] {target}/ajax-get-items?nodeId={id}
    • [GET] {target}/ajax-new-requirement?nodeId={id}
    • [GET] {target}/ajax-remove-requirement?nodeId={id}
    • ...
    Quelle est le store le plus adapté à mes besoins ? Ou bien comment adapter JSonRestStore à mes besoins ?

  3. #3
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Pourquoi tu ne traites pas tes requêtes en PUT sur le server ? Tu ne peux traiter que du GET et du POST ?

    ERE

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut
    Bonjour Emmanuel,

    Une petite remarque au passage, j'adore ta signature, je suis en plein dedans. Heureusement que ce forum existe.

    J'ai 2 solutions :
    1. Soit je modifie mon serveur pour prendre en compte les requêtes PUT, DELETE...
    2. Soit j'utilise un autre type de store
    Le problème avec la 1ère, c'est que ça demande beaucoup de travail et que je devrais re-développez une bonne partie du serveur ET de l'ihm.

    C'est pour cela que je préfèrerai la 2e solution. Je suis en train de voir pour connecter mon dijit.Tree à un dojo.store.Memory.
    Je ferai alors mes requêtes traditionnellement puis mettrai à jour le store. Théoriquement le Tree devrait se rafraichir automatiquement non ?

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    J'aurais tendance à dire que REST c'est REST donc c'est logique de ne pas pouvoir changer le mode de fonctionnement avec les PUT et DELETE notamment.

    LA question, c'est plutôt pourquoi cela pose problème côté server ? Qu'il faille légèrement adapté, pourquoi pas mais normalement c'est sans souci. Qu'utilises tu côté server ?

    Ensuite, pas de souci pour utiliser dojo.store.Memory, sauf que tu vas devoir gérer toi même tes appels Ajax, ce qui n'est pas top, mais surtout c'est refaire le job que fait JsonRest...

    ERE

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut
    Ça devient une habitude : j'ai finalement suivi ton conseil, et je me mets au REST...

    Pour le moment j'ai juste mis en place la récupération des items. Maintenant il faut que je m'occupe de la création et de la suppression...

    Juste une petite remarque, lorsque j'utilise le dojo.tree.TreeStoreModel, mon arborescence ne s'affiche pas. Je suis donc obligé de créer les méthodes nécessaires dans mon store et d'utiliser mon store comme model...

Discussions similaires

  1. [Swing]Mettre à jour un champ d'un autre Jfame
    Par yoyothebest dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 14/09/2004, 13h39
  2. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  3. Réponses: 3
    Dernier message: 09/07/2004, 10h23
  4. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08
  5. Réponses: 6
    Dernier message: 14/02/2003, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo