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 类与静态类的实现(续)
Apr 02 Javascript
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
Vue.js用法详解
Nov 13 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
Aug 03 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
JavaScript+HTML实现学生信息管理系统
Apr 20 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巧获服务器端信息
2006/12/06 PHP
php中目录,文件操作详谈
2007/03/19 PHP
PHP的加密方式及原理
2012/06/14 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
php给数组赋值的实例方法
2019/09/26 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
Python中itertools模块用法详解
2014/09/25 Python
Python 字典dict使用介绍
2014/11/30 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
小学教师培训感言
2014/02/11 职场文书
2014庆六一活动方案
2014/03/02 职场文书
服装发布会策划方案
2014/05/22 职场文书
新文化运动的口号
2014/06/21 职场文书
银行先进个人总结
2015/02/15 职场文书
2015年信访工作总结
2015/04/07 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
解决python3安装pandas出错的问题
2021/05/20 Python
Mysql 如何查询时间段交集
2021/06/08 MySQL
Javascript之datagrid查询详解
2021/09/15 Javascript
vue实现滑动解锁功能
2022/03/03 Vue.js