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 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
浅析vue数据绑定
Jan 17 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
JS简单实现数组去重的方法示例
Mar 27 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
vue指令v-html使用过滤器filters功能实例
Oct 25 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 Javascript
JavaScript This指向问题详解
Nov 25 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绘制在图片上的正余弦曲线
2013/06/08 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
处理Python中的URLError异常的方法
2015/04/30 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
python中with用法讲解
2020/02/07 Python
python 实现波浪滤镜特效
2020/12/02 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
播音主持专业个人自我评价
2014/01/09 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis