mam taki problem, stworzyłem sobie taką konstrukcję:
1) bazę danych na serwerze MySQL
2) Z bazy pod określonym adresem generuję sobie plik RDF
3) Z interfejsu napisanego w XULu sięgam sobie do pliku RDF i wyświetlam informacje z bazy danych w postaci prostego drzewa
4) Wszystko jest fajnie dopóki nie chcę odświeżyć sobie tego drzewa. To znaczy, za pomocą formularza zmieniam sobie w bazie informacje, a następnie za pomocą takiej funkcji:
- Kod: Zaznacz cały
function ReloadTree(tree_name, datasource_url)
{
//ReloadDatasource(datasource_url);
var tree = document.getElementById(tree_name);
//To summarize, the refresh method reloads the data, whereas the rebuild method reconstructs the content.
tree.builder.refresh();//dane
tree.builder.rebuild();//wygląd
}
ustawiłem interfejs tak aby po każdej zmianie drzewo się odświeżało (mam też guzik do ręcznego odświeżania) i wtedy dzieją się dziwne rzeczy:
a) Gdy dodaję nową pozycję wszystko jest ok - pozycja dodaje się na końcu listy
b) gdy usuwam: z listy znika usunięta pozycja i wszystkie po niej (w bazie są), dopiero odświeżenie ręczne powoduje, że na listę 'wracają' brakujące pozycje (z ostanią nie ma tego problemu)
c) gdy modyfikuję: znika napis modyfikowanej pozycji (zostaje jakby pusty wiersz w drzewie) i dopiero odświeżenie ręczne powoduje, że w wierszu pojawia się nowy właściwy napis.
Jeśli wiecie o co chodzi to bardzo będę wdzięczny za pomoc.
Informacje dodatkowe:
Ad 2. Generowanie pliku RDF (sądzę, że składnia jest prawidłowa)
- Kod: Zaznacz cały
<?
include("inc/require.inc.php");
header('Content-type: text/rdf; charset=iso-8859-2');
//header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
$table_name = 'todo';
echo '<' . '?xml version="1.0" encoding="iso-8859-2" ?' . '>'."\n";
echo'<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n";
echo'xmlns:'.$table_name.'="http://www.moja.com/rdf/'.$table_name.'list#">'."\n";
print InsertValuesToRDF("SELECT * FROM todo;", $table_name);
echo'</RDF:RDF>';
Ad. 3. Fragment kodu XUL wyświetlającego drzewo.
- Kod: Zaznacz cały
<tree flex="1" id="tree_todo" datasources="z_term_todo.rdf.php" ref="urn:todo:root">
<treecols>
<treecol id="term_todo_id_todo" label="id" hidden="true" />
<treecol id="term_todo_fk_workers" label="fk_workers" hidden="true" />
<treecol id="term_todo_description" label="Opis" flex="3"/>
<treecol id="term_todo_deadline" label="deadline" flex="1" primary="true" class="sortDirectionIndicator" sort="rdf:http://www.moja.com/rdf/todolist#deadline"/>
<treecol id="term_todo_is_done" label="zrobione?"/>
</treecols>
<template>
<treechildren context="todo_context_menu">
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.moja.com/rdf/todolist#id_todo" />
<treecell label="rdf:http://www.moja.com/rdf/todolist#fk_workers" />
<treecell label="rdf:http://www.moja.com/rdf/todolist#description" />
<treecell label="rdf:http://www.moja.com/rdf/todolist#deadline" />
<treecell label="rdf:http://www.moja.com/rdf/todolist#is_done" />
</treerow>
</treeitem>
</treechildren>
</template>
</tree>