重新加载 Ajax 请求中返回的 jsTree 数据

发布于 2024-12-04 13:20:04 字数 718 浏览 1 评论 0原文

我的 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);
}

My jsTree contains html data that is set when the tree loads (see javascript below). This works correctly. However, I want to be able to reload the entire tree in an Ajax request based on certain user actions. I basically need to reload all the tree data returned from the Ajax request. Is this possible?

My current code is below:

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆悲凉 2024-12-11 13:20:04

谢谢拉德克。

实际上,我通过将 jstree 初始化代码放入函数(tvJoinWorkspaceTreeviewScriptInit)中,然后在重置 html 后调用该函数来实现此目的。可能是节点都失去了它们的状态(打开/关闭)。我决定使用 Ajax 回调和 javascript 再次构建树,因为它最终更容易做到。

$("div#tvJoinWorkspace").html(data);
$("#tvJoinWorkspace").jstree("destroy");
tvJoinWorkspaceTreeviewScriptInit(null);

Thanks Radek.

I actually got this to work by putting the jstree intialization code into a function (tvJoinWorkspaceTreeviewScriptInit) and then calling that function after resetting the html. The probably is that the nodes all lose their state (opened / closed). I decided to use Ajax callbacks and javascript to build the tree again because it ended up being much easier to do.

$("div#tvJoinWorkspace").html(data);
$("#tvJoinWorkspace").jstree("destroy");
tvJoinWorkspaceTreeviewScriptInit(null);
奢欲 2024-12-11 13:20:04

这个呢?如果您通过 $("#jstree").jstree({ 定义树

并且您的 html 是

<div id="tree">
  <div id="jstree">
  </div>
</div>

,那么您可以

替换

; 类似于

What about this one? If you define your tree by

$("#jstree").jstree({ and you html is

<div id="tree">
  <div id="jstree">
  </div>
</div>

then you can

replace the <div id="jstree"></div> with something like <div id="jstree_ajax"></div>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文