[Xulfr] Quel évènement capturer pour mettre à jour l'attribut "value" d'un widget de type "menulist" après l'avoir rafraichis par du contenu RDF ?
Manganneau Emmanuel
manu at gestranet.net
Mar 6 Mar 16:43:27 CET 2007
Bonjour,
KLEIN Stéphane wrote:
> Bonjour,
>
> j'ai une balise "menulist" qui reçoit ses données à partir d'un
> fichier RDF. J'aimerais sélectionner automatiquement un élément
> après que le RDF soit chargé. Pour cela j'utilise un observateur,
> lorsque qu'il reçoit l'évènement "didRebuild" j'initialise la
> valeur de mon menulist. Mais cela fonctionne en théorie car en
> pratique cela ne marche pas.
>
> Par contre, si je click sur le bouton "bar", l'élément est bien
> sélectionné. Je pense donc que je n'utilise pas le bon évènement.
> Peut être que lorsque l'évènement "didRebuild" est généré, le
> widget n'est pas encore totalement mis à jour.
>
> Connaissez vous une autre méthode ? Quel est le bon évènement après
> lequel je pourrais mettre à jour la valeur "value" de "menulist" ?
>
>
> Vous trouverez en pièce jointe le code source de ma page XUL puis
> mon fichier RDF.
>
> Merci d'avance Stéphane
Perso, voici la solution que j'utilise et que je te préconise :
- tu as un élément Seq, ce qui va nous faciliter la tâche,
- on va prendre la propriété "intitule" comme identifiant unique
(c'est mal...)
donc :
- tu construis une resource literal pour ton identifiant unique
var resuid = rdfService.GetResource("http://exemple.com/rdf#intitule");
- un literal pour la valeur que tu souhaites :
var valuid = rdfService.GetLiteral(uid); /* uid est ton identifiant
unique */
- tu en déduis la resource recherchée :
var res = ds.GetSource(resuid,valuid,true);
- tu récupères ton container
(je mets pas le code c'est long...) var container =
this.getContainer(); /* méthode à moi, par exemple... */
- tu récupère l'index :
var idx = container.IndexOf(res); /* méthode standard du container */
if (idx == -1) { alert("Pas d'élément trouvé dans le container...");
return; };
if ((idx != -1) && (idx != 0)) { idx = idx -1;}
- tu initialises ton menulist :
list.selectedIndex = idx ;
A noter cependant : j'ai un bug de la version 2.0.0.2 de FF; si je
fais ce qui est décrit ci-dessus, tout marche *sauf* si la page n'est
pas visible.
Dans un contexte avec pleins d'onglets par exemple, les menulists dans
les onglets cachés ne s'initialisent pas.
Je n'ai pas de pb avec FF 2.0.0.1 ...
HTH,
Plus d'informations sur la liste de diffusion Xulfr