首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jsTree,如果选中/突出显示了现有父项,如何将新项目添加到现有父项的子组中?

使用jsTree,如果选中/突出显示了现有父项,如何将新项目添加到现有父项的子组中?
EN

Stack Overflow用户
提问于 2020-08-28 00:32:28
回答 1查看 46关注 0票数 0

代码语言:javascript
复制
<script>

        $(function () {
            @{
                var rootGroup = Model.Groups.FirstOrDefault(group => group.ParentGroupId == null);
            }
            let selectedGroup = "";
            let selectedNode = null;
            let groups = {};
            @foreach(var group in Model.Groups) {
                @:groups["@group.GroupId"] = { delete:false ,id: "@group.GroupId", parent: "@group.ParentGroupId", name: "@group.Title", order: "@group.OrderNum" };
            }
            $('#groupTree').jstree({
                "checkbox": { "three_state": false },
                "core": {
                    "check_callback": true,
                    'data': [
                        @foreach (var item in Model.Groups) {
                        @if (item.ParentGroupId == null)
                            {
                                @:{ "id": "@item.GroupId", "parent": "#", "text": "@item.Title", "state": { "disabled": true } },
                            }
                            else
                            {
                                @:{ "id": "@item.GroupId", "parent": "@item.ParentGroupId", "text": "@item.Title" },
                            }
                        }
                    ],
                    "themes": {
                        "icons": false
                    },
                },
                "plugins": ["themes","dnd"]
            }).on('loaded.jstree', function () {
                $("#groupTree").jstree("open_all");
            }).on("select_node.jstree", function (evt, data) {
                $("#group-name-input").val(groups[data.node.id].name);
                selectedGroup = data.node.id;
                selectedNode = data.node;
                $("#group-name-input").prop('disabled', false);
                $("#save-group-button").prop('disabled', false);
                $("#delete-group-button").prop('disabled', false);
            }).on("move_node.jstree", function (evt, data) {
                groups[data.node.id].parent = data.parent;
                groups[data.node.id].order = data.position;
                $("#SerializedGroupInformation").val(JSON.stringify(groups));
            })

            $("#save-group-button").click(function () {
                if (selectedGroup != "") {
                    groups[selectedGroup].name = $("#group-name-input").val();
                    $("#groupTree").jstree('rename_node', selectedNode, $("#group-name-input").val());
                    $("#SerializedGroupInformation").val(JSON.stringify(groups));
                    $("#group-name-input").prop('disabled', true);
                    $("#save-group-button").prop('disabled', true);
                    $("#delete-group-button").prop('disabled', true);
                    $("#group-name-input").val("");

                }
            })
            $("#delete-group-button").click(function () {
                if (selectedNode.children.length > 0) {

                    swal({
                        title: 'Error!',
                        text: 'The group can not have any children.',
                        icon: 'error'
                    });
                    return;
                }
                groups[selectedGroup].delete = true;
                $("#groupTree").jstree('delete_node', selectedNode);
                $("#SerializedGroupInformation").val(JSON.stringify(groups));
                $("#group-name-input").prop('disabled', true);
                $("#save-group-button").prop('disabled', true);
                $("#delete-group-button").prop('disabled', true);
                $("#group-name-input").val("");
            })
            $("#new-group-button").click(function () {
                var name = $("#new-group-input").val();
                var group = { name: name, order: "0", id: "", parent:"" }
                var node = { id: name, text: name };
                $('#groupTree').jstree('create_node', "@rootGroup.GroupId", node, 'last');
                groups[name] = group;
                $("#SerializedGroupInformation").val(JSON.stringify(groups));
                $("#group-name-input").prop('disabled', true);
                $("#save-group-button").prop('disabled', true);
                $("#delete-group-button").prop('disabled', true);
                $("#group-name-input").val("");
                $("#new-group-input").val("");
            })
        });
</script>

考虑到上面的代码,我如何才能将新组作为子节点添加到选定的父节点?我没有做到这一点。有人能帮上忙吗?我是一个开发新手,我不愿意承认JS不是我强大的suit...yet :)

我已经尝试了多种方法,并将继续这样做,但这是原始代码,我没有尝试解决这个问题。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 15:47:18

这是一个演示如何向选定的parent: View添加新项目:

代码语言:javascript
复制
<div id="jstree">
</div>
<button id="create">create button</button>

Js代码:

代码语言:javascript
复制
@section scripts{
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var managerTeam = [{
            "id": "m1",
            "text": "M1",
            "children": [{
                "id": "m2",
                "parent": "m1",
                "text": "M2"
            }, {
                "id": "t1",
                "parent": "m1",
                "text": "T1"
            }, {
                "id": "m3",
                "parent": "m1",
                "text": "M3",
                "children": [{
                    "id": "t2",
                    "parent": "m3",
                    "text": "T2"
                }, {
                    "id": "t3",
                    "parent": "m3",
                    "text": "T3"
                }],
                "state": { "opened": true }
            }],
            "state": { "opened": true }
        }];

           
            $('#create').on('click', function () {
                
                var position = 'inside';
                var newNode = { state: "open", data: "New nooooode!" };
                var parent = $('#jstree').jstree('get_selected')[0];
                $('#jstree')
                    .jstree({
                        "core": {
                            "check_callback": true
                        }
                    })
                    .create_node(parent, newNode, position, false, false); 
            });
        });
       
    </script>
}

结果:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63620415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档