gpt4 book ai didi

javascript - 使用存储过程按需加载 JSTree

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:20:27 24 4
gpt4 key购买 nike

目前,我在 SQL Server 中有两个存储过程用于处理从数据库中检索树:
当您传入级别编号时,第一个检索特定级别的所有节点。
另一个在您传入 Level、Left 和 Right 值时检索特定节点的子节点。

我正在使用 MVC 3。
理想情况下,我希望将 JSTree 设置为在每次用户单击以展开节点时调用数据库。因此,我不想像通常那样将整个树加载到服务器上的 Json 模型中,然后将其传递给 JSTree,而是只传递用户单击的特定节点的子节点。这将发生在每个节点上,因此只有直接节点的子节点必须传递到 JSTree 而不是整个树。

这可能吗?如果是这样,我将感谢一些示例代码的 View (尤其是)以及可能使用 Microsoft 的 MVC 3 框架的 Controller 。如果有任何帮助,我将不胜感激。

最佳答案

是的,这是可能的,使用 jstree 实际上非常简单。

你想要做的是使用 json_data jstree 插件的 ajax 参数,但是设置它以便 dataurl 参数被传递给一个函数,该函数将发送已扩展的节点 ID,以便您的网络服务可以调用您的存储过程并返回所选节点的子节点的数据。

这是来自 http://www.jstree.com/documentation/json_data 的示例之一稍微修改一下:

$("#tree").jstree({ 
"json_data" : {
"ajax" : {
"url" : "/yourwebservice/getnodechildren",
"data" : function (node) {
//this is passed the node being opened
//or -1 if it's the root node

var dataToPass = {};

if (node === -1) {
//pass parameters to the webservice that will build and return
//first two tree levels

dataToPass = {
id : 0,
initialLoad: true
};
}

if (node.attr && node.attr("id") {
dataToPass = {
id: node.attr("id"),
initialLoad: false
}
}

return dataToPass;

},
"success" : function (dataFromWebservice) {
//depending on how the webservice returns
//data you may need to do this
return dataFromWebservice.d;
}
}
},
"plugins" : [ "themes", "json_data" ]
});

您可以使这段代码更加优雅,但这就是要点。这将允许您按需分块构建树,而不是一次全部构建。

如果您的 web 服务设置为在 url 上传递参数,只需将 url 改为函数,并使用它来使用节点 ID 或您需要的任何其他参数来构建您的 url 请求。

关于javascript - 使用存储过程按需加载 JSTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859266/

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