Envoyé par : woogluf
Date : 21/02/2006 22:21
Bonjour,
J'expérimente l'utilisation des datasource rdf est de tree. Je réussis bien à charge mon tableau (tree sous forme tabulaire et non d'arbre), je voudrais reccupérer l'identifiant de ma ligne sélectionnée. Voici en gros ma source RDF:
<?xml version="1.0" encoding="UTF-8"?> <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:row="http://dummy/rdf#"> <RDF:Seq about="urn:data:row"> <RDF:li> <RDF:Description> <row:id>2</row:id> <row:nom>Dupont</row:nom> <row:prenom>Jean</row:prenom> </RDF:Description> </RDF:li> </RDF:Seq> </RDF:RDF>
Et voici mon code :
var list=document.getElementById('liste'); var ressource list.view.getResourceAtIndex(list.currentIndex);
Ma question est comment réccupérer proprement mon identifiant (2 par exemple), sachant que mon tree à le drapeau "dont-build-content".
Merci d'avance.
Envoyé par : kriks
Date : 22/02/2006 10:31
essaie ça:
var rowIndex = list.currentIndex; var col = list.columns['id']; var monId = list.view.getCellText(rowIndex,col);
il faut évidemment que le treecol correspondant ait un id (ici 'id')
Envoyé par : woogluf
Date : 22/02/2006 11:53
Merci, je vais essayer. Mais ça m'embête un peu sur le principe, je ne veux pas faire apparaître la colonne id dans mon tree.
Je préférerais un truc du style:
var ressource list.view.getResourceAtIndex(list.currentIndex); var monId=ressource.'getQqlChose()';
de manière à ne travailler que sur la source de donnée RDF, et non pas sur sa représentation visuelle.
Envoyé par : kriks
Date : 22/02/2006 15:52
un petit :
<treecol id="id" hidden="true" ignoreincolumnpicker="true"/>
devrait arranger les choses
Envoyé par : woogluf
Date : 22/02/2006 22:04
Ca c'est de la bibouille !!!
Je ne veux pas perdre des fonctionnalitées d'interface pour cacher un identifiant !!!
Merci quand même pour tes réponses.
J'ai fini par trouver ce que je cherchais, voici le code :
// réccupération du service RDF var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"] .getService(Components.interfaces.nsIRDFService); // Réccupération du tree var tree=document.getElementById('maListe'); // réccupération des sources de données associées au tree var datasources = tree.database.GetDataSources(); // Il n'y en a qu'une dans mon example, donc je prends la première var datasource = datasources.getNext(); if (datasource instanceof Components.interfaces.nsIRDFDataSource) { var idRS = RDF.GetResource("http://dummy/rdf#id"); if (datasource instanceof Components.interfaces.nsIRDFDataSource) { // Je réccupère la ressource associé à la ligne voulue var resource=tree.view.getResourceAtIndex(tree.currentIndex); // Je réccupère la cible correpondant à ma ressource et à mon prédicat var resourceId=datasource.GetTarget(resource, idRS, true);; if (resourceId instanceof Components.interfaces.nsIRDFLiteral){ // et voila, j'ai ma valeur alert(resourceId.Value); } } }
La gros avantage de cette méthode, c'est que je n'ai pas besoin de supposer que le valeur recherchée soit dans une colonne précise, la valeur peut d'ailleurs ne pas être affichée du tout.
C'est vri que le code est plus lourd ;) ...
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.