Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [résolu] Generation dynamique de menulist

Envoyé par : syl

Date : 12/06/2007 14:38

Bonjour à tous,

Je génére une liste déroulante dynamiquement à partir du dom :

newctrl = document.createElement("menulist");		// liste deroulante choix présentation parametre
newctrl.setAttribute("id","LD_typegui1");
newctrl.setAttribute("ref", "urn:data");
var newmenulist = newro.appendChild(newctrl);
var newtemplate = newmenulist.appendChild(document.createElement("template"));
var newpopup = newtemplate.appendChild(document.createElement("menupopup"));
var newitem = document.createElement("menuitem");
newitem.setAttribute("uri","rdf:*");
newitem.setAttribute("label","rdf:http://www.aase.org/defchamps_gui/rdf#label");
newitem.setAttribute("value","rdf:http://www.aase.org/defchamps_gui/rdf#id");
newpopup.appendChild(newitem);

document.getElementById("LD_typegui1").setAttribute("datasources", "http://localhost/aase/aacontroleur.php?action=guichamps");

Ceci pour obtenir le XUL suivant (un simple template quoi!) :

<menulist id="LD_typegui1" datasources="http://localhost/aase/aacontroleur.php?action=guichamps" ref="urn:data">
		<template>
			<menupopup>
				<menuitem uri="rdf:*" label="rdf:http://www.aase.org/defchamps_gui/rdf#label" value="rdf:http://www.aase.org/defchamps_gui/rdf#id"/>
			</menupopup>
		</template>
	</menulist>

La liste apparait bien, mais impossible de voir les choix (menuitem), le template ne semble pas généré. Deplus j'ai regardé avec le DOM inspector et il n'y a aucun d'éléments enfant de la menulist (popup, templte...) en affichage du XUL alors que si j'affiche les objets javascripts, je retrouve les enfants créés par le DOM...

Je vois pas ce qui ne va pas,

Si quelqu'un à une idée, SVP

Sylvain

# Re: Generation dynamique de menulist

Envoyé par : syl

Date : 12/06/2007 14:47

Je reviens à la charge. En fait, les enfants de la menulist sont bien visibles dans le DOM inspecteur. Néanmoins, il semble qu'il y est un problème pour faire executer le template et générer ainsi les menuitem.

Peut on forcer la génération du template dans ce cas là...

Merci par avance

Sylvain

# Re: Generation dynamique de menulist

Envoyé par : papy

Date : 12/06/2007 15:04

Bonjour,

j'ai rencontré un problème de ce genre avec les arbres. En fait ca ne fonctionnait pas car il ne trouvait pas d'élément treechildren a la création du composant ( ce qui est normal vue que le contenu du template n'était pas encore généré)

Code correspondant :

 <tree ...>
   <template>
     <treechildren>
       ...
     </treechildren>
   </template>
 </tree>

J'ai contourné cela en lui ajoutant un treechildren vide dans le code (ca ne pose pas de problème, le moteur de template ne recrée pas le noeud s'il existe deja) :

 <tree ...>
   <treechildren/>
   
   <template>
     <treechildren>
       ...
     </treechildren>
   </template>
 </tree>

Essai de faire l'équivalent avec le menupopup pour voir ce que ca donne.

P.S : mes explications sont peut être un peu farfelues, mais en tout cas cela fonctionne chez moi maintenant.

# Re: Generation dynamique de menulist

Envoyé par : syl

Date : 12/06/2007 17:00

Ca y est, ca marche !

En fait il suffisait de spécifier que le datasources soit à "rdf:null" lors de la création dynamique du menu list. Ainsi si l'on affecte ultérieurement un nouveau datasource à celui-ci, le template est correctement généré. Voici la 3ème ligne qu'il fallait rajouter :

...
newctrl.setAttribute("id","LD_typegui1");
newctrl.setAttribute("ref", "urn:data");
newctrl.setAttribute("datasources", "rdf:null");
var newmenulist = newro.appendChild(newctrl);
...

Merci papy de ta collaboration, si cela peut t'aider

Bonne journée

Sylvain

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.