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 Object与Function使用
Jan 11 Javascript
javascript下4个跨浏览器必备的函数
Mar 07 Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
Oct 29 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
Nov 25 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
详解vue.js的devtools安装
May 26 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
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设计模式 Command(命令模式)
2011/06/26 PHP
PHP中echo和print的区别
2014/08/28 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
jquery自定义表格样式
2015/11/23 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Pandas分组与排序的实现
2019/07/23 Python
Python requests设置代理的方法步骤
2020/02/23 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
学生档案自我鉴定
2013/10/07 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL