入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

bootstrap treeview 增删改的正确姿势

创建时间:2017-01-31 投稿人: 浏览次数:18394

我的engineercms中大量使用bootstrap treeview,如果不能实现增删改那只能换成ztree了。不过还是找到了解决方法。

网上的方法都是基于https://github.com/jonmiles原版的treeview,采用在源码中增加方法达到目的,比如:

bootstrap-treeview 扩展 添加多个子节点、删除节点、删除全部子节点 和 惰性加载的应用

bootstrap-treeview 扩展addNode方法 动态添加子节点的方法

bootstrap-treeview 扩展addNode deleteNode方法 动态添加删除子节点的方法

bootstrap-treeview addNode deleteNode editNode 全都奉上


而用google搜索bootstrap treeview addnode,就找到了https://www.npmjs.com/package/patternfly-bootstrap-treeview也就是这个https://github.com/patternfly/patternfly-bootstrap-treeview,这里实现了增删改的方法。

addNode(nodes, parentNode, index, options)

Add nodes to the tree.

$("#tree").treeview("addNode", [ nodes, parentNode, index, { silent: true } ]);

If parentNode evaluates to false, node will be added to root

If index evaluates to false, node will be appended to the nodes

Triggers nodeRendered event; pass silent to suppress events.

removeNode()

Removes given nodes from the tree.

$("#tree").treeview("removeNode", [ nodes, { silent: true } ]);

updateNode(node, newNode, option)

Updates / replaces a given tree node.

$("#tree").treeview("updateNode", [ node, newNode, { silent: true } ]);

Triggers nodeRendered event; pass silent to suppress events.


当然,还有其他非常好的方法,比如父子孙节点联动。

hierarchicalCheck

Boolean. Default: false

Whether or not to enable hierarchical checking/unchecking of checkboxes.

propagateCheckEvent

Boolean. Default: false

Whether or not to propagate nodeChecked and nodeUnchecked events to the parent/child nodes, used in conjunction with hierarchicalCheck.

这里的坑,就是nodeid已经不是一个数字,旧版的nodeid是将展开后的tree从上往下排序,1代表最上面那个节点,以此类推。而新的变成了,0.0或者1.0.0.0类似这样的,分别表示第一个一级目录的第一个节点,第二个一级目录下的第三级目录的第一个节点。位数代表分级,数字代表序号。

向选中的节点下添加子节点

function savecate(){
        var projcatename2 = $("#projcatename2").val();
        var projcatecode2 = $("#projcatecode2").val();
        arr=$("#tree").treeview("getChecked");
      if (projcatename2)
        {  
            $.ajax({
                type:"post",
                url:"/admin/project/addprojectcate",
                data: {id:arr[0].id,name:projcatename2,code:projcatecode2},//父级id
                success:function(data,status){
                  alert("添加“"+data+"”成功!(status:"+status+".)");
                  var singleNode = {
                    text: projcatename2,
                    id:data,
                    code:projcatecode2
                  };
                  $("#tree").treeview("addNode", [singleNode,arr]);
                  $("#modalTable2").modal("hide");
                 }
            });  
        }  
    }

//编辑节点
    function updatecate(){
        var projcatename3 = $("#projcatename3").val();
        var projcatecode3 = $("#projcatecode3").val();
        // var parentid = $("#pid").val();
        arr=$("#tree").treeview("getChecked");
        // var nid = $("#nid").val();//节点顺序号nodeId
        // alert(projcatename2);
        // alert(nid);
        // $.getJSON("treeAddData.json", function (data) {
        // }); 
      if (projcatename3)
        {
          $.ajax({
            type:"post",
            url:"/admin/project/updateprojectcate",
            data: {id:arr[0].id,name:projcatename3,code:projcatecode3},
            success:function(data,status){
              alert("编辑成功!(status:"+status+".)");
              var singleNode = {
                text: projcatename3,
                id:data,
                code:projcatecode3
              };
              $("#tree").treeview("updateNode", [ arr, singleNode,{ silent: true } ]);
              // $("#tree").treeview("updateNode", [ node, newNode, { silent: true } ]);
              $("#modalTable3").modal("hide");
            }
          });
        }
    }

//删除节点
    $("#removeButton").click(function() {
      arr=$("#tree").treeview("getChecked");
        if (arr.length==0){
          alert("请先勾选!");
          return;
        }
      var ids="";
      for(var i=0;i<arr.length;i++){
        if(i==0){
          ids=arr[i].id;
        }else{
          ids=ids+","+arr[i].id;
        }  
      }
    // var obj = JSON.stringify(arr);
    // alert(arr);
    // alert(obj);
      if(confirm("确定删除吗?第一次提示!")){
      }else{
        return false;
      }

      if(confirm("确定删除吗?一旦删除将无法恢复!")){
        $.ajax({
          type:"post",
          url:"/admin/project/deleteprojectcate",
          data: {ids:ids},
          success:function(data,status){
            alert("删除“"+data+"”成功!(status:"+status+".)");
            $("#tree").treeview("removeNode", [ arr, { silent: true } ]);
          }
        });
      }
    })



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像