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现实多行信息
Aug 26 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 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实现微信公众号主动推送消息
2015/12/31 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
js电话号码验证方法
2015/09/28 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
python logging日志模块的详解
2017/10/29 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
春节活动策划方案
2014/01/24 职场文书
军训学生自我鉴定
2014/02/12 职场文书
质量主管工作职责
2014/09/26 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
就业导师推荐信范文
2015/03/27 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
催款律师函范文
2015/05/27 职场文书
公司老总年会致辞
2015/07/30 职场文书
详解Redis瘦身指南
2021/05/26 Redis
如何自己动手写SQL执行引擎
2021/06/02 MySQL
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS