我的jsTree包含树加载时设置的html数据(请参阅下面的javascript)。这工作正常。但是,我希望能够基于某些用户操作在Ajax请求中重新加载整个树。我基本上需要重新加载从Ajax请求返回的所有树数据。这可能吗?
我目前的代码如下:
function setJoinType(node, joinType) {
$.ajax({
type: "POST",
url: "qbwizard.aspx/SetJoinType",
contentType: "application/json; charset=utf-8",
data: "{'alias': '" + node[0].id + "', 'joinType': '" + joinType + "'}",
dataType: "json",
success: RedrawJoinSummary,
error: AjaxFailed
});
return true;
}
function RedrawJoinSummary(data) {
//$("#tvJoinSummary").jstree('destroy');
$("#tvJoinSummary").jstree("html", data.d);
$("#tvJoinSummary").jstree("refresh", -1);
}
答案 0 :(得分:3)
谢谢拉德克。
我实际上是通过将jstree初始化代码放入函数(tvJoinWorkspaceTreeviewScriptInit)然后在重置html后调用该函数来实现的。可能是节点都失去了状态(打开/关闭)。我决定使用Ajax回调和javascript再次构建树,因为它最终变得更容易。
$("div#tvJoinWorkspace").html(data);
$("#tvJoinWorkspace").jstree("destroy");
tvJoinWorkspaceTreeviewScriptInit(null);
答案 1 :(得分:1)
这个怎么样?如果您通过
定义树 $("#jstree").jstree({
你的HTML是
<div id="tree">
<div id="jstree">
</div>
</div>
然后你可以
用<div id="jstree"></div>
<div id="jstree_ajax"></div>