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 相关文章推荐
服务器安全设置的几个注册表设置
Jul 28 Javascript
JavaScript Event学习第四章 传统的事件注册模型
Feb 07 Javascript
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 Javascript
Bootstrap table分页问题汇总
May 30 Javascript
javascript算法之二叉搜索树的示例代码
Sep 12 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 Javascript
JS实现简易日历效果
Jan 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
删除重复数据的算法
2006/11/23 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
python pandas 如何替换某列的一个值
2018/06/09 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
python基于property()函数定义属性
2020/01/22 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
给朋友的道歉信
2014/01/09 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
现役军人家属慰问信
2015/03/24 职场文书
特种设备安全管理制度
2015/08/06 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技