Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Suppression de datasource : permission refusée

Envoyé par : Utilisateur anonyme

Date : 27/03/2006 15:29

Bonjour, suite à ma question concernant la confirmation de chargement d'un RDF, un nouveau problème vient me pourrir ma journée, déjà bien entamée par un changement d'heure toujours aussi mal supporté malgrès les années ;)

J'ai donc un tree, dont le contenu est alimenté par la fonction suivante :

function loadTree(treeId, dsUrl)
{
try 
{
	netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
	var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
    
	datasource = RDF.GetDataSource("http://localhost/"+dsUrl);

	if (datasource.loaded) 
	{
		alert("Datasource déjà chargé !");
	} 
	else 
	{
		document.getElementById('loading_div').style.display='block';
		var sink = datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
		sink.addXMLSinkObserver(Observer);
	}

	var tree = document.getElementById(treeId);
	var remote = datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
	remote.Refresh(false);
	
	if (remote.loaded)
     	{
       	tree.database.AddDataSource(datasource);
       	tree.builder.rebuild();
	}
       else
     	{
       	tree.database.AddDataSource(datasource);
	}
   }
   catch(e) 
{
   	alert(e);
   }
}

Le problème se pose lorsque je veux actualiser le contenu. Exemple concret : recherche de personnes. Lors de l'initialistion, la liste des personnes commençant par 'A' est affichée. On veux rechercher les personnes commençant par 'C'. Dès lors, ces personnes(C) s'ajoutent à la liste des personnes(A) déjà resorties.

Qu'à cela ne tienne, on va vider la liste avant de charger les nouveaux résultats de la recherche. Ben ouaip sauf que... "Permission refusée de créer une classe enveloppante pour un objet de la classe UnnamedClass" lorsque je veux faire un tree.database.GetDataSources(); dans ma fonction :

function clearTree(treeId)
{
 try 
 {
	var tree = document.getElementById(treeId);
	alert(tree.view.rowCount+" Enregistrements");   
	
	sources = tree.database.GetDataSources();
	alert('test');   
	
	while(sources.hasMoreElements())
	{
		ds = sources.getNext();
		tree.database.RemoveDataSource(ds);
	}
 }
 catch(e) 
 {
	alert(e);
 }
} 

J'ai bien mon tree, mon alert est bien comme il faut mais le GetDataSources ne semble pas vouloir passer...

Si quelqu'un pouvait me dire d'où vient cette erreur, ça m'oterait un sacré sapin du pied.

Freud

# [Résolu] Suppression de datasource : permission refusée

Envoyé par : Utilisateur anonyme

Date : 27/03/2006 15:40

Bon, voilà qui est fait. Mon arbre se vide bien et est désormais affiché vide, comme je le souhaite. Pour information, j'ai rajouté un netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); avant le GetDataSources() donc le message d'erreur n'apparaît plus et au passage un petit tree.builder.rebuild(); pour que la liste soit bien affichée vide.

Voici la fonction (ça pourrait peut-être servir à quelqu'un) :

function clearTree(treeId)
{
try 
{
   	var tree = document.getElementById(treeId);
	alert(tree.view.rowCount+" Enregistrements");   
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
	sources = tree.database.GetDataSources();
	
	while(sources.hasMoreElements())
	{
		ds = sources.getNext();
		tree.database.RemoveDataSource(ds);
	}
	
       tree.builder.rebuild();
	alert(tree.view.rowCount+" Enregistrements"); 
}
  	catch(e) 
{
	alert(e);
}
} 

Freud

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.