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 相关文章推荐
把jQuery的类、插件封装成seajs的模块的方法
Mar 12 Javascript
JS搜狐面试题分析
Dec 16 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
在Mac下彻底卸载node和npm的方法
May 16 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
vue项目中实现缓存的最佳方案详解
Jul 11 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 Javascript
Vue常用API、高级API的相关总结
Feb 02 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
文章推荐系统(三)
2006/10/09 PHP
php上传大文件设置方法
2016/04/14 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
node中实现删除目录的几种方法
2019/06/24 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
详解python开发环境搭建
2016/12/16 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python向excel中写入数据的方法
2019/05/05 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Python zip函数打包元素实例解析
2019/12/11 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
中文系师范生自荐信
2013/10/01 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android