Obtención de datos actuales de KendoUI TreeView

Estoy usando un árbol de UI de kendo con una fuente de datos remota desde un archivo JSON. Tengo un botón en la página del árbol que obtiene los datos actuales del árbol, los envía a través de un POST a un servidor y el servidor guarda los datos actuales en el archivo JSON para que la próxima vez que vuelva a cargar la página, los cambios que hice Se mantendrá. Eso es lo que quiero que suceda.

Así que sé que los datos actuales del árbol están en:

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

Lo que significa que los datos cambian en tiempo real allí, por ejemplo, cuando alguien arrastra y suelta un nodo del árbol.

Mi problema comienza cuando estos datos no parecen cambiar cuando arrastro y suelto nodos dentro del árbol, y solo cambia cuando arrastro y suelto un nodo en el nivel de raíz del árbol, e incluso entonces no lo hace correctamente. el nodo también se debe mover allí, pero en su lugar, el nodo se copia, dejando el nodo anterior en el árbol también ...

Por ejemplo tengo este árbol:

Si hago un arrastrar y soltar cambio de esta manera:

¡Y envío los datos, los guardo y recargo, el cambio no se realiza en absoluto!

PD: Incluso cuando veo los datos actuales después del cambio antes de enviarlos, veo que no hay ningún cambio en los datos a pesar de que hice un cambio visualmente con un arrastrar y soltar. Así que no tiene que ver con El envío, el ahorro y el servidor.

Por otro lado, si hago un cambio como este:

Puedo ver en los datos actuales que el nodo movido se agregó al final de los datos, pero no se eliminó de su posición inicial dentro de los datos. Por lo tanto, si envío los datos actuales al servidor, los guardo y luego los actualizo. obtener el resultado:

El código para ver y enviar los datos es:

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

¿Se trata de un error o estoy haciendo algo mal? ¿Alguien ha podido ver los datos actuales cambiando correctamente cada vez que arrastra y suelta?

Respuestas a la pregunta(2)

Su respuesta a la pregunta