Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

# Templates SQLite et attribut id

Envoyé par : kofkof

Date : 19/05/2009 17:59

Salut,

Je suis en train d'apprendre XUL. Pour me former, j'ai décidé de développer une petite extension qui permet, en cliquant sur un bouton, de vérifier si des pages web ont été modifiées.

La liste des pages à vérifier est enregistrée dans une table SQLite, que j'affiche dans une sidebar avec le template suivant :

<listbox id="listePages" datasources="base.sqlite" ref="*" querytype="storage">

    <template>
    
        <query>
            SELECT id, titre, adresse FROM pagesweb
        </query>
    
        <action>
            <listitem uri="?">
                <listcell label="?titre" />
                <listcell label="?adresse" />
            </listitem>
        </action>
    
    </template>

</listbox>

Ensuite, lors du clic sur le bouton, je passe en revue toutes les pages web de la table SQLite et, pour chaque modifiée, je voudrais modifier le style du listitem correspondant. Problème : comment récupérer ce listitem ?

L'idéal serait un bon vieux getElementById(idSQL) mais :

  • les id de mes listitems sont générés automatiquement (comportement normal si j'ai bien compris), impossible de mettre <listitem uri="?" id="?id"> dans mon template
  • les id générés automatiquement sont apparemment aléatoires (id="rdf:#$+BLlk3", par exemple)...

Note : je suis sous Firefox 3.5b4

# Re: Templates SQLite et attribut id

Envoyé par : laurentj

Date : 22/05/2009 15:08

Salut,

Et pourquoi tu ne stocke pas l'id dans un attribut de ton choix ?

 <listitem uri="?" recordid="?">
     <listcell label="?titre" />
     <listcell label="?adresse" />
 </listitem>

Ensuite, avec l'api de la listbox, tu récupère l'item selectionné (selectedItem), puis la valeur de son attribut recordid...

# Re: Templates SQLite et attribut id

Envoyé par : kofkof

Date : 22/05/2009 15:35

Merci Laurent pour ta réponse. Je ne savais pas que je pouvais définir des attributs personnalisés, mais c'est une bonne nouvelle :-) Je peux donc stocker l'id de mon enregistrement quelque part, super.

tu récupère l'item selectionné (selectedItem), puis la valeur de son attribut recordid

Non, ce que je veux faire, c'est récupérer le listitem uniquement à partir de son recordid (pas de sélection dans la listbox). Je crois qu'il va me falloir boucler à chaque fois sur l'ensemble des listitems de ma listbox, comme ça :

var li = listbox.getElementsByTagName('listitem');
for (var i=0; i<li.length; i++) {
    if (li[i].getAttribute('recordid') == recordId) {
        var listitem = li[i];
        break;
    }
}

Je n'ai aucune idée de l'impact au niveau performances par rapport à un simple document.getElementById(), mais je suppose que ce ne sera pas dramatique.

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.