Envoyé par : xulien
Date : 13/08/2007 10:34
Bonjour, Je débutes en xul, je cherche un moyen d'éditer une cellule d'une listbox depuis un click souris. Quelqu'un a t'il déjà fait ca ?
Envoyé par : hhf
Date : 13/08/2007 17:07
tu es en remote ou dans le chrome ?
si tu es dans le chrome, je te conseille de mettre dans tes listcells, un xbl qui se comporte comme un stack (display : -moz-stack dans le css) ou dedans tu met un label et un textbox. sur le double click, tu bascules entre le label et le textbox. tu geres le retour chario pour valider la data.
Si tu es en remote. il me semble important de minimiser les scripts, et surtout de garder une coherence entre les données clients et serveur. donc je te conseille de charger ta listbox via un rdf. Sur un double click sur une listcell, tu ouvre un prompt avec la valeur actuel de la cellule. sur le ok du prompt tu envois les données au serveur qui met a jour les données. sur le retour de la requette, tu recharge ton rdf.
Voila. C'est juste les grandes lignes si tu as besoins de plus d'infos n'hesites pas
Envoyé par : xulien
Date : 14/08/2007 10:49
merci beaucoup pour l'explication Malgré que je sois en remote je voyais plus un truc comme la première idée mais je n'ai pas tout compris peux-tu développer stp ?
Envoyé par : hhf
Date : 14/08/2007 23:02
ben si tu utilises la premiere methode (plus facile à apprehender j'entends bien) il faudra ensuite que tu prevois un bouton pour poster les infos ou prevoir une requette style AJAX pour les poster dès pression sur ENTER par exemple.jusque là d'accord.Le PB, c'est que les infos sont deja modifié sur le client donc ce dernier peut presumé que la modif à été prise en compte sur le serveur. Comme on peut l'esperer d'un client riche. si tu envois automatiquement ou par l'action de l'utilisateur les modifs il faudra que tu controles que le serveur à bien pris en compte la modif et si c'est pas le cas (erreur ou autre) remettre la valeur d'origine et informer le client de l'erreur. Tout irai bien si tu pouvais controler toutes les erreurs... helas... Bien sur ya tjs moyen de contourner le PB, bascule du textbox au label apres validation du serveur etc...
Quoi qu'il en soit, tu vois bien que dans le processus il peut y avoir incoherence des données sur le client et sur le serveur.
Si par contre ta listbox (ou tree encore mieux si bcp de data) est chargé par un RDF, tu implementes juste que sur un doubleclick tu lance un :
var newValue = window.prompt(oldValue);
tu POST la nouvelle valeur avec l'id de la ligne qui est modifié. à ce moment le client à toujours l'ancienne valeur affiché. tu fais le traitement sur le serveur, si ca ce passe bien tu retourne ok et tu recharge le RDF si ca ce passe mal tu en informe le client et tu recharge ou pas le RDF en fonction de tes besoins.
Notes que si par exemple le serveur ne reponds pas, un xmlhttprequest te retournera une erreur de timeout, dans tous les cas tu pourras catché l'erreur, et en informer le client, il verra ses données inchangé à l'ecran.
Voila c'est un peu compliqué de prime abort, mais pour moi c'est la bonne methode. Et une fois que tu l'as fait une fois, tu verras tu auras envie de le faire partout.
Cette methode peut s'appliqué quasiment à tout, cases a cocher, label, ordonance etc... sauf peut etre au textarea (il serait insensé de posté à chaque frappe au clavier :-| bien sur.)
Voila si besoin, je vais refléchir à faire un exemple pour mettre en ligne. A bientot
Envoyé par : xulien
Date : 16/08/2007 11:15
Merci beaucoup pour ta réponse Ok j'ai bien compris le problème et me suis naturelement orienté vers la deuxième solution. En revanche un exemple en ligne serait le bien venu au cas ou... Merci encore A+
Envoyé par : hhf
Date : 18/08/2007 13:14
je vais mettre ca en ligne, je refléchis à un exemple suffisament pertinent, mais en même tps suffisament simple à mettre en oeuvre et à expliqué. Problème epineu....
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.