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


Posted in Javascript onNovember 21, 2017

bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等等。

本文只是详细说明对bootstrap-treeview添加子节点的扩展方法(addNode),如了解bootstrap-treeview所有用法请看官方API

官方api  https://www.npmjs.com/package/bootstrap-treeview   (点击新窗口打开)

 使用过程中,需要动态添加子节点。发现api中没有此功能。找了很多资料也没有发现有相关的方法。

又不想放弃使用它,看来只能自己写的。先读他们的源代码,看他们的逻辑关系,然后就下手自己写一下。不多说,直接上代码

第一步:在Tree主函数return {/*在这里添加addNode的入口*/} 

看图比较直观

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

附上代码:

addNode: $.proxy(this.addNode, this),

第二步:添加Tree的prototype方法

/** 
    给节点添加子节点 
@param {Object|Number} identifiers - A valid node, node id or array of node identifiers 
@param {optional Object} options.node; 
  */ 
Tree.prototype.addNode = function (identifiers, options) { 
  this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) { 
    this.setAddNode(node, options);  
  }, this)); 
  this.setInitialStates({ nodes: this.tree }, 0); 
  this.render(); 
} 
  /** 
  * 添加子节点 
  */ 
Tree.prototype.setAddNode = function (node, options) { 
  if (node.nodes == null) node.nodes = []; 
  if (options.node) { 
    node.nodes.push(options.node); 
  }; 
};

看图:

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

第三步:就是如何使用了。

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

$("#Treeview01").treeview("addNode", [2, { node: { text: "新加的菜单", href: "001005" } }]);

注意 $("#Treeview01")使用data已初始化过的

下面看个实例TreeView动态添加节点

遍历某路径下的文件夹添加父节点,遍历文件夹下的文件添加子节点

private void button1_Click(object sender, EventArgs e)
    {
      FolderBrowserDialog fd = new FolderBrowserDialog();
      if (fd.ShowDialog() == DialogResult.OK)
      {
        // 在此添加代码,选择的路径为 folderBrowserDialog1.SelectedPath
        if (Directory.Exists(fd.SelectedPath))
        {
          DirectoryInfo thisOne = new DirectoryInfo(fd.SelectedPath);
          DirectoryInfo[] directoryInfo = thisOne.GetDirectories();
          for (int i = 0; i < directoryInfo.Length; i++)
          {
            TreeNode root = new TreeNode(directoryInfo[i].ToString());//创建节点
            root.Name = directoryInfo[i].ToString(); //为节点取个名字,这儿创建的是根节点
            root.Tag = 0;
            treeView1.Nodes.Add(root);        //将节点添加到treeView1上
            DirectoryInfo thisTwo = new DirectoryInfo(fd.SelectedPath + "\\" + directoryInfo[i].ToString());
            FileInfo[] fileInfo = thisTwo.GetFiles();
            for (int j = 0; j < fileInfo.Length; j++)
            {
              TreeNode node = new TreeNode(fileInfo[j].ToString());
              node.Tag = 1;
              node.Name = fileInfo[j].ToString();
              if (!root.Nodes.ContainsKey(node.Name))
              {
                root.Nodes.Add(node);
              }
            }
          }
        }
      }
    }

总结

以上所述是小编给大家介绍的bootstrap treeview 扩展addNode方法动态添加子节点的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
Angular4自制一个市县二级联动组件示例
Nov 21 #Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 #Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 #Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 #Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
Nov 21 #Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 #Javascript
微信小程序实现tab切换效果
Nov 21 #Javascript
You might like
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
详解python中各种文件打开模式
2020/01/19 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
支部鉴定材料
2014/06/02 职场文书
委托公证书样本
2015/01/23 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
爱心募捐通知范文
2015/04/27 职场文书
欠款起诉书范文
2015/05/19 职场文书
2015国庆节宣传语
2015/07/14 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis