Aktuelle Daten aus KendoUI TreeView abrufen

Ich verwende einen Kendo-UI-Baum mit einer Remote-Datenquelle aus einer JSON-Datei. Auf der Baumseite befindet sich eine Schaltfläche, mit der die aktuellen Daten des Baums abgerufen, über einen POST an einen Server gesendet und die aktuellen Daten in der JSON-Datei gespeichert werden, damit die von mir vorgenommenen Änderungen beim nächsten Laden der Seite übernommen werden wird behalten. Das ist, was ich passieren will.

Ich weiß also, dass die aktuellen Daten des Baums in:

$("#treeview").data("kendoTreeView").dataSource.data()

Dies bedeutet, dass sich die Daten dort in Echtzeit ändern, wenn beispielsweise ein Knoten des Baums per Drag & Drop verschoben wird.

Mein Problem beginnt, wenn sich diese Daten scheinbar nicht ändern, wenn ich Knoten in den Baum ziehe und dort ablege, sondern nur, wenn ich einen Knoten auf der Stammebene des Baums ziehe und dort ablege und es auch dann nicht richtig macht Der Knoten sollte auch dort hineingeschoben werden, aber stattdessen wird der Knoten kopiert und der vorherige Knoten bleibt ebenfalls im Baum ...

Zum Beispiel habe ich diesen Baum:

Wenn ich eine Drag & Drop-Änderung wie folgt vornehme:

Und ich sende die Daten, speichere sie und lade sie neu. Die Änderung wurde überhaupt nicht vorgenommen!

PS: Auch wenn ich die aktuellen Daten nach der Änderung vor dem Senden ansehe, sehe ich, dass die Daten überhaupt nicht geändert wurden, obwohl ich eine Änderung visuell per Drag & Drop vorgenommen habe. Das hat also nichts damit zu tun das Senden, Speichern und den Server.

Auf der anderen Seite, wenn ich eine Änderung wie folgt vornehme:

Ich kann in den aktuellen Daten sehen, dass der verschobene Knoten zwar am Ende der Daten hinzugefügt wird, aber nicht von seiner ursprünglichen Position innerhalb der Daten gelöscht wird. Wenn ich also die aktuellen Daten an den Server sende, speichere und aktualisiere ich sie Erhalten Sie das Ergebnis:

Der Code zum Anzeigen und Senden der Daten lautet:

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);
            }
        }

Handelt es sich um einen Bug oder mache ich etwas falsch? Hat jemand gesehen, wie sich die aktuellen Daten bei jedem Ziehen und Ablegen korrekt geändert haben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage