Pobieranie bieżących danych z KendoUI TreeView
Używam drzewa interfejsu użytkownika kendo ze zdalnym źródłem danych z pliku JSON. Mam przycisk na stronie drzewa, który pobiera bieżące dane drzewa, wysyła je przez POST na serwer, a serwer zapisuje bieżące dane w pliku JSON, aby następnym razem, gdy załaduję stronę, zmiany, które wprowadziłem Będę trzymany. To właśnie chcę się wydarzyć.
Wiem więc, że aktualne dane drzewa znajdują się w:
$("#treeview").data("kendoTreeView").dataSource.data()
Oznacza to, że dane zmieniają się w czasie rzeczywistym, na przykład gdy ktoś przeciągnie i upuści węzeł drzewa.
Mój problem zaczyna się, gdy dane nie wydają się zmieniać, gdy przeciągam i upuszczam węzły wewnątrz drzewa, i zmieniają się tylko wtedy, gdy przeciągam i upuszczam węzeł na poziomie głównym drzewa i nawet wtedy nie robi to odpowiednio, jak węzeł powinien również zostać tam przeniesiony, ale zamiast tego węzeł zostanie skopiowany, pozostawiając także węzeł z przeszłości w drzewie ...
Na przykład mam to drzewo:
Jeśli zrobię zmianę przeciągnij i upuść w następujący sposób:
Wysyłam dane, zapisuję je i ponownie ładuję zmianę, która nie została wykonana!
PS: Nawet gdy przeglądam bieżące dane po zmianie, zanim je wyślę, widzę, że nie ma żadnych zmian w danych, mimo że dokonałem zmiany wizualnie za pomocą przeciągania i upuszczania. Więc nie ma to związku z wysyłanie, zapisywanie i serwer.
Z drugiej strony, jeśli wprowadzę taką zmianę:
Widzę w bieżących danych, że przeniesiony węzeł jest rzeczywiście dodawany na końcu danych, ale nie jest usuwany z jego początkowej pozycji w danych! Więc jeśli wysyłam bieżące dane na serwer, zapisz go, a następnie odśwież I uzyskać wynik:
Kod do przeglądania i wysyłania danych to:
function sendData() {
var req = createRequest();
var putUrl = "rest/hello/treeData";
req.open("post", putUrl, true);
req.setRequestHeader("Content-type","application/json");
var dsdata = $("#treeview").data("kendoTreeView").dataSource.data();
alert(JSON.stringify(dsdata));
req.send(JSON.stringify(dsdata));
req.onreadystatechange = function() {
if (req.readyState != 4) {
return;
}
if (req.status != 200) {
alert("Error: " + req.status);
return;
}
alert("Sent Data Status: " + req.responseText);
}
}
Czy jest to błąd, czy robię coś źle? Czy ktoś był w stanie zobaczyć aktualne dane zmieniające się poprawnie przy każdym przeciągnięciu i upuszczeniu?