ztree的pid如何获取最准确了

发布于 2021-11-21 01:58:48 字数 2162 浏览 818 评论 8

@zTree 你好,想跟你请教个问题:

我看ztree demo上addHoverDom里获取pid = treeNode.id。但是我数据库里的id主键是自增的,中间有一部分数据被删除掉了,所以从21到71之间是没有数据的,因此,当连续添加新的节点时,会出现的情况是:

第一个添加的节点数据是正确的,即,id=71,parent(pid)= 16,但是第二个就开始不对了:id=72,parent(pid)=22,通过上述方法pid= treeNode.id取出来的pid居然是22,但数据库里并没有22这个id值,请问应该用什么方法得到的pid最准确呢。

数据表如下(parent即pid):


addHoverDom函数的代码如下:

function addHoverDom(treeId, treeNode) {
            var sObj = $("#" + treeNode.tId + "_span");
            if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
            var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
                + "' title='add node' onfocus='this.blur();'></span>";
            sObj.after(addStr);
            var btn = $("#addBtn_"+treeNode.tId);
            if (btn) btn.bind("click", function(){
                var zTree = $.fn.zTree.getZTreeObj("treeDemo");
                //zTree.addNodes(treeNode, {id: newCount, pId:treeNode.id, name:"new node"});
                var pId = treeNode.id;
                //var id = zNodes.length + newCount;
                var name = "new node";
                var level = treeNode.level + 2 ;
                var url = "AddNode";
                var data = {};
                //data['id'] = id;
                data['name'] = name;
                data['pId'] = pId;
                data['level'] = level;
                $.ajax({
                    type:"POST",
                    url:url,
                    data:data,
                    success: function(msg){
                        alert("节点名称添加成功");
                    }
                });
                zTree.addNodes(treeNode, {id: (zNodes.length + newCount), pId:treeNode.id, name:"new node"});
                return false;
            });
        };



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

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

发布评论

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

评论(8

情栀口红 2021-11-27 19:25:19

引用来自“zTree”的评论

1. zTree 绝对不会自行修改 id 的值,只会在使用简单数据模式下修正 pId 的值

2. id: (zNodes.length + newCount) 你的代码中新节点的 id 是这么计算出来的, 这本身就有问题吧?

成熟稳重的好男人 2021-11-27 19:21:57

1. zTree 绝对不会自行修改 id 的值,只会在使用简单数据模式下修正 pId 的值

2. id: (zNodes.length + newCount) 你的代码中新节点的 id 是这么计算出来的, 这本身就有问题吧?

反话 2021-11-27 19:13:53

再提醒你一下 zTree.addNodes 应该在最后调用,明白不?

笑红尘 2021-11-27 19:12:38

恩,知道了,非常感谢!继续学习ing。有问题请不吝赐教啊。

叹沉浮 2021-11-27 19:07:08

回复
请教你一个问题,我看了你的代码,其中有一段:zTree.addNodes(treeNode, {id : data, pId : treeNode.id, name : addName}); 这里面id:data,这个data不是所有返回的数据么?这样赋给id起什么作用? 另外:之前给oderIds的赋值又有什么用呢?

流心雨 2021-11-27 18:29:47

回复
大哥,data数据是自定义的,可以是任何数据,你纠结啥呢,排序和名称存库了,返回的是数据库主键ID,Node节点的ID是需要自己生成控制的,不然哪来的你上面的问题?

反目相谮 2021-11-25 20:45:32

回复
恩恩,自定义了一下id的数据,就OK了!

回眸一笑 2021-11-22 01:04:53

参考下JfinalUIB的代码吧:

执行逻辑,点击新增按钮时,生成一个节点名称(任意),然后传到后台保存,后台返回数据库ID值,然后创建节点(此时父节点ID和本节点ID都有了,包括名称)

http://git.oschina.net/dongcb678/JfinalUIB/blob/master/JFinalUIB/WebContent/WEB-INF/view/platform/department/tree.html  

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