是的,这是可能的,jstree 实际上非常简单。
您想要做的是使用 jstree 插件的ajax
参数json_data
,但对其进行设置,以便向data
orurl
参数传递一个函数,该函数将发送已扩展的节点 ID,以便您的 Web 服务可以调用您的存储过程并返回所选节点的子节点的数据。
这是来自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 请求。