javascript - 无法使用 ExtDnd5 对节点进行排序,只能设置为子节点

标签 javascript html sorting drag-and-drop fancytree

我想将 FancyTree 与表和 dnd5 扩展一起使用。但是当我拖动一个节点时,我只能将其放在另一个节点中,而不能放在同一深度级别的两个节点之间。

我尝试将我的代码与示例进行比较,但找不到任何差异。这是我的代码:

HTML 表格标记。 表类用于 Bootstrap。 @Model.TableId 适用于 MVC5 Razor。 当我删除 Bootstrap 类时,两者都应该无关紧要,并且问题仍然存在。

<table class="treeTableControl table table-bordered table-striped table-hover" id="treetable_@Model.TableId">
        <colgroup>
            <col width="30px" />
            <col width="30px" />
            <col width="*" />
        </colgroup>
        <thead>
            <tr>
                <th> </th>
                <th>#</th>
                <th>Name</th>
            </tr>
        </thead> 
        <tbody>
        </tbody>
    </table>

JavaScript

init() {
        var me = this;

        me.tableid = me.$tree.data("tableid");
        me.treeTableData = CSB32["treeTableData_" + me.tableid];

        me.$tree.fancytree({
            checkbox: true,
            titleTabbable: true,
            source: me.treeTableData,
            extensions: ["table", "gridnav", "dnd5", "edit"],
            table: {
                checkboxColumnIdx: 0,
                nodeColumnIdx: 2
            },
            renderColumns: function (event, data) {
                var node = data.node;
                var $tdList = $(node.tr).find(">td");

                $tdList.eq(1)
                    .text(node.getIndexHier())
                    .addClass("alignRight");
            },
            dnd5: {
                preventVoidMoves: false,
                preventRecursion: true,
                autoExpandMS: 400,
                dragStart: function (node, data) {
                    return true;
                },
                dragEnter: function (node, data) {
                    return true;
                },
                dragDrop: function (node, data) {
                    data.otherNode.moveTo(node, data.hitMode);
                }
            },
            edit: {
                triggerStart: ["f2", "dblclick"],
                close: function (event, data) {
                    if (data.save && data.isNew) {
                        me.$tree.trigger("nodeCommand", { cmd: "addSibling" });
                    }
                }
            }
        });
    }

我的示例源数据

{"children":[{"key":1000010,"title":"TG 628s 4-Port ETH Switch ","children":[]},
{"key":1000008,"title":"4400 Series WLAN Controller","children":[
 {"key":1000009,"title":"CISCO 3845","children":[]},
 {"key":1000007,"title":"10/100/1000Base-T LX","children":[]}]},
{"key":1000011,"title":"Test Product","children":[]}],"columns":[]}

Here I try to move #3 between #1 and #2, but I can only add the node as child

最佳答案

好吧,我在尝试创建 JSFiddle 时发现了错误。我的 jQuery 版本太旧了。使用 3.x,我可以根据需要对节点进行排序。

关于javascript - 无法使用 ExtDnd5 对节点进行排序,只能设置为子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56831980/

相关文章:

javascript - 如何正确地将 MSAL(用于 js 的 Microsoft 身份验证库)导入并使用到 typescript react 单页应用程序中?

javascript - 如何通过 JavaScript 计算两个日期之间的月份和天数?

javascript - Unicode 字符转义序列未在 handlebar.js 中正确打印

javascript - 手动将 dirty 设置为字段不会修改 css 类 angularJS?

mysql - 当存在特殊字符时,使用 REPLACE() 按字母数字顺序对 mySQL SELECT 进行 ORDER BY

arrays - 为什么合并排序对大数组更好,而快速排序对小数组更好?

javascript - 带有弹出框的动画

php - 网站如何在不重新加载页面的情况下检查登录凭据?

javascript - React - 绝对定位元素和画线

python - 理解如何在 Python 的合并排序中存储和传递值的概念的问题