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 学习笔记(五)
Dec 31 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
angular十大常见问题
Mar 07 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
vue项目中运用webpack动态配置打包多种环境域名的方法
Jun 24 Javascript
websocket4.0+typescript 实现热更新的方法
Aug 14 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
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 Global定义全局变量使用说明
2013/08/15 PHP
给ECShop添加最新评论
2015/01/07 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
幼儿园中秋节活动反思
2014/02/16 职场文书
经营目标管理责任书
2014/07/25 职场文书
服务行业演讲稿
2014/09/02 职场文书
收款委托书
2014/10/14 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
营业员岗位职责
2015/02/11 职场文书
活着观后感
2015/06/03 职场文书
中秋晚会致辞
2015/07/31 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers