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?

questionAnswers(2)

yourAnswerToTheQuestion