<script type="text/javascript">
//trying to mimmick dee's answer here: http://stackoverflow.com/questions/32290570/lazy-loading-treeview-with-jstree-in-asp-net-mvc
$(function() {
var $children = $("#object-children-tree");
$children.jstree({
"core": {
"animation": 0,
"data": {
"url": function(node) {
return '@Url.Action("GetNodes", "BatchData")';
},
"data": function (selectedNode) {
// Hopefully, each time jstree needs to make an AJAX call this function will be called.
// # is the special ID that the function receives when jstree needs to load the root nodes.
if (selectedNode.id == "#")
return { "selectedNodeId": selectedNode.id }
if (selectedNode.data.nodeType == "provider")
return { "selectedNodeId": selectedNode.id, "selectedNodeType": selectedNode.data.nodeType }
if (selectedNode.data.nodeType == "fileType")
return { "selectedNodeType": selectedNode.data.nodeType, "blockId": selectedNode.data.blockId, "selectedNodeParentId": selectedNode.parent }
return {"selectedNodeId": selectedNode.Id}
}
}
},
"plugins": ["wholerow"]
});
});
</script>
<div id="object-children-tree">
@* Content will be populated by jsTree *@
</div>
&#13;
我一直在阅读关于ajax和回调的jstree文档和线程。但是,我无法弄清楚如何将它们应用到我的问题中。我的树有五个级别。当我在第一级切换节点时,我希望它调用特定的服务器动作(&#34; / controller / action&#34; b / c我使用MVC)。然后应该出现二级子级,从服务器的结果创建。当我在第二级切换节点时,我希望它调用另一个服务器动作(&#34; / controller / differentAction&#34; - MVC)。然后应该出现三级孩子。依此类推:切换三级节点并调用另一个操作,响应用于生成四级子级。如果这肯定得到了回答,你能指导我去哪里看看,并可能解释它是如何适用的吗?我认为与我的例子的不同之处在于,通过在每个级别上切换节点来调用不同的操作。我需要这样做,因为每个节点的子节点数非常多。
谢谢,
**编辑:**我放弃了调用不同操作的想法,只允许特定操作来处理要调用的其他操作,这很好。
[HttpGet]
public ActionResult GetNodes(string selectedNodeId = null, string selectedNodeType = null, string blockId = null, string selectedNodeParentId = null)
{
if (selectedNodeId == "#") //Root nodes
{
return AllProviders();
}
if (selectedNodeType == "provider")
{
return FileTypesOfProvider(Convert.ToInt32(selectedNodeId));
}
if (selectedNodeType == "fileType")
{
return FilesOfProviderOfType(Convert.ToInt32(blockId), Convert.ToInt32(selectedNodeParentId));
}
return AllProviders();
}
答案 0 :(得分:0)
我错误地命名了realFiles的父级,导致重复的ID。现在我已经解决了这个问题。