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 相关文章推荐
仅img元素创建后不添加到文档中会执行onload事件的解决方法
Jul 31 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
深入理解React中何时使用箭头函数
Aug 23 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
使用JavaScript保存文本文件到本地的两种方法
Jan 22 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
解析dedecms空间迁移步骤详解
2013/05/15 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python调用虹软2.0第三版的具体使用
2019/02/22 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
jupyter实现重新加载模块
2020/04/16 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
Nike香港官网:Nike HK
2019/03/23 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
应届毕业生求职信范例分享
2013/12/17 职场文书
社区活动邀请函范文
2014/01/29 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
教师节感想
2015/08/11 职场文书
经典祝酒词大全
2015/08/12 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
德生2P3收音机开箱评测
2022/04/30 无线电