gpt4 book ai didi

json - 从 KendoUI TreeView 获取当前数据

转载 作者:行者123 更新时间:2023-12-03 21:38:59 25 4
gpt4 key购买 nike

我正在使用带有来自 JSON 文件的远程数据源的剑道 UI 树。
我在树页面上有一个按钮,它获取树的当前数据,通过 POST 将其发送到服务器,服务器将当前数据保存到 JSON 文件,以便下次我重新加载页面时,我所做的更改将被保留。这就是我想要发生的事情。

所以我知道树的当前数据在:

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

这意味着数据在那里实时变化,例如当有人拖放树的节点时。

当我在树内拖放节点时这些数据似乎没有改变时,我的问题就开始了,并且只有在我在树的根级别上拖放节点时才会改变,即使这样它也不会正确地执行节点也应该移到那里,但是节点被复制,将过去的节点也留在树中......

例如,我有这棵树:

Starting Tree

如果我像这样进行拖放更改:

Change 1

我发送数据,保存它并重新加载根本没有进行更改!

PS:即使我在发送之前查看更改后的当前数据,我也看到数据根本没有变化,即使我通过拖放进行了可视化更改。所以它与发送、保存和服务器。

另一方面,如果我做出这样的改变:

enter image description here

我可以在当前数据中看到移动的节点确实添加到数据的末尾,但它并没有从数据中的初始位置删除!所以如果我将当前数据发送到服务器,保存它然后刷新我得到结果:

enter image description here

查看和发送数据的代码是:
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);
}
}

这是一个错误还是我做错了什么?有没有人能够在每次拖放时看到当前数据正确变化?

最佳答案

首先也是最重要的,你必须使用最新版本的 KendoUI(Kendo UI Beta v2012.3.1024)仍处于测试阶段,但他们已经解决了许多问题。

然后,当您创建 kendoTreeView 时,您必须这样说:

    tree = $("#treeview").kendoTreeView({
dataSource :kendo.observableHierarchy(data),
dragAndDrop:true
}).data("kendoTreeView");

这里重要的是 不是 直接使用数据数组但用 kendo.observableHierarchy 包装它.

然后,您将使用拖放结果更新数据。

关于json - 从 KendoUI TreeView 获取当前数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13309896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com