Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# remplir une liste déroulante

Envoyé par : tiotsam

Date : 13/09/2007 17:50

Bonjour,

j'aimerai remplir un menulist avec le contenu d'un fichier. Je créé donc ma liste déroulante dans mon fichier.xul :

<menulist editable="true" id="urlbar" value="" flex="1"/> <script>remplissageURL();</script>

et donc dans mon fichier.js j'ai fait la fonction :

function remplissageURL() {

 var list = document.getElementById('urlbar');
 var txt = read("chemin absolu vers le fichier");
 var lettre = 0;
 var site="";
 var i =0;
 while( i <10 && txt[lettre] != "%")
 {
   while(txt[lettre]!= "\n")
   {
     site += txt[lettre];
     lettre++;
   }     
   list.appendItem(site, i+1);  
   site="";
   i++;
   lettre++;
 }  

}

cette foncion marche pour une liste normale mais pour une liste déroulante il ne met rien du tout.

donc si quelqu'un peut m'aider ce serai gentil.

# Re: remplir une liste déroulante

Envoyé par : hhf

Date : 14/09/2007 16:45

houlala ...mauvaise methode. Utilise un RDF plutot que de te casser la tete à parser ler fichier toi meme

Ton fichier XUL ne doit contenir que l'interface, la logique client donc les JS doit ce trouver dans un fichier à part. Les données (ici le contenue du menu) doive se trouver dans un fichier externe (comme tu la fait) generer par ta logique metier. Volia enfin peut etre ton cas est particulier, les modeles doivent etre contourné parfoit.

# Re: remplir une liste déroulante

Envoyé par : tiotsam

Date : 17/09/2007 14:35

Je ne sais pas du tout me servir du RDF et d'après ce que j'ai vu si je m'en sers la je vai devoir modifier beaucoup d'autres fonction^^ il n'y aurait pas un autre moyen pour remplir la liste déroulante ? Je me sers déjà de la fonction que j'ai posté pour remplir une liste normale et cela fonctionne mais il doit y avoir quelque chose qui m'échappe pour la liste déroulante.

# Re: remplir une liste déroulante

Envoyé par : hhf

Date : 17/09/2007 20:54

dans ce cas essayes en creant toi meme les items il me semble dans mes debut et que j'utilisé la mauvaise methode ;-), que j'avais déjà vu des truc comme ca :

  var list = document.getElementById('urlbar');
  var txt = read("chemin absolu vers le fichier");
  var lettre = 0;
  var site="";
  var i =0;
  var item = null;
  while( i <10 && txt[lettre] != "%") {
    while(txt[lettre]!= "\n") {
      site += txt[lettre];
      lettre++;
    }     
    item = document.createElement("menuitem");
    item.setAttribute("label", site);
    item.setAttribute("value", ++i);
    list.appendChild(item);  
    site="";
    lettre++;
  }  

Sinon, j'insite sur le RDF, le RDF est pour moi une des forces de XUL ne pas l'utiliser est vraiment dommage. ca oblige a faire du scripting pour peupler les elements alors que justement RDF permet de s'affranchir de ca. Crois moi, une fois que tu y aura gouté, tu te demanderas comment tu faisais avant.

Pour t'en convaincre voici se que ca donnerait :

Pour le composant en lui meme :

  <menulist  flex="1">
     <menupopup datasources="datas/sites.rdf" ref="urn:site:list">
        <template>
           <menuitem uri="rdf:*" label="rdf:urn:site#name" value="rdf:urn:site#value"/>
        </template>
     </menupopup>
  </menulist> 

Pour le fichier RDF içi "sites.rdf" dans le repertoire "datas", que tu genereras via ton language metier java php ou autre :

  <?xml version="1.0" encoding="UTF-8"?>
  <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:NC="http://home.netscape.com/NC-rdf#" xmlns:SITE="urn:site#">
     <RDF:Seq RDF:about="urn:site:list">
        <RDF:li><RDF:Description SITE:name="scale" SITE:value="1"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="datepicker" SITE:value="2"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="timepicker" SITE:value="3"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="selector" SITE:value="4"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="slider" SITE:value="5"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="spinbutton" SITE:value="6"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="autosuggest" SITE:value="7"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="rdfobserver" SITE:value="8"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="htmlarea" SITE:value="9"/></RDF:li>
        <RDF:li><RDF:Description SITE:name="xmlfile" SITE:value="10"/></RDF:li>
     </RDF:Seq>
  </RDF:RDF>

Voila en esperant qu'apres un essai tu seras convaincu

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.