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 13 Javascript
JS 时间显示效果代码
Aug 23 Javascript
编写自己的jQuery插件简单实现代码
Apr 19 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
详谈js的变量提升以及使用方法
Oct 06 Javascript
JavaScript交换变量常用4种方法解析
Sep 02 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
Node.js 路由的实现方法
2019/06/05 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python实现异步回调机制代码分享
2014/01/10 Python
python转换摩斯密码示例
2014/02/16 Python
python uuid模块使用实例
2015/04/08 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python关闭占用端口方式
2019/12/17 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
python里glob模块知识点总结
2021/01/05 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
火山动力Java笔试题
2014/06/26 面试题
城建学院毕业生自荐信
2014/01/31 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
React中的Context应用场景分析
2021/06/11 Javascript