C#应用jstree实现无限级节点的方法
下载jstree.js下载地址: http://jstree.com/
当前下载版本: jsTree 3.3.1
第一步:下载完成后引用js+css
- <link href="~/plugs/dist/themes/default/style.min.css" rel="stylesheet" />
- <script src="~/plugs/dist/jstree.min.js"></script>
第二步:添加jstree容器
- <div id="jstree_list">
- </div>
第三步:初始化jstree配置,为其指定数据源
- $('#jstree_list').jstree({
- 'core': {
- 'multiple': false,//能否选中多个节点
- 'data': {
- url: '/Mobile/Count/GetModuleList',//获取数据源地址
- dataType:'json',//返回数据源类型json
- data: function (node) {
- return { 'parentid': node.id == '#' ? "0" : node.id };//定义一个为前面url传递的参数
- }
- }
- }
- });
第四步:指定节点选中事件
- //选中事件
- $('#jstree_list').on('changed.jstree', function (e, data) {
- var i, j, r = [];
- for (i = 0, j = data.selected.length; i < j; i++) {
- //只做单个节点选中
- r["text"] = data.instance.get_node(data.selected[i]).text;
- r["id"] = data.instance.get_node(data.selected[i]).id;
- }
- });
以上所有方法需要在页面加载完执行
jstree非常灵活和强大可以指定多种数据源,这里只说明json格式数据源,也是较常用的数据源格式。
第五步:创建jstree数据源
- public string GetModuleList()
- {
- var appModule = _dbs.DataBase.GetCollection<AppModule>("config_app_module");
- var appmoduleall = appModule.FindAllAs<AppModule>().ToList();
- var rootmodule = appmoduleall.Where(e => e.pid.Equals()).ToList();
- StringBuilder strb = new StringBuilder();
- strb.Append("[");
- //定义递归方法
- Func<int, int> GetChildrenModule = null;
- GetChildrenModule = id =>
- {
- var childrenmodules = appmoduleall.Where(e => e.pid.Equals(id)).ToList();
- if (childrenmodules.Count() > )
- {
- strb.AppendFormat(", \"children\":[");
- foreach (var cm in childrenmodules)
- {
- strb.Append("{");
- strb.AppendFormat("\"id\":\"{0}\"", cm._id);
- strb.AppendFormat(", \"text\":\"{0}\"", cm.amname);
- GetChildrenModule(cm._id);
- if (childrenmodules.IndexOf(cm) == (childrenmodules.Count - ))
- {
- strb.Append("}");
- }
- else
- {
- strb.Append("},");
- }
- }
- strb.AppendFormat("]");
- }
- return childrenmodules.Count();
- };
- //遍历根节点
- foreach (var item in rootmodule)
- {
- strb.Append("{");
- strb.AppendFormat("\"id\":\"{0}\"", item._id);
- strb.AppendFormat(", \"text\":\"{0}\"", item.amname);
- GetChildrenModule(item._id);
- if (rootmodule.IndexOf(item) == (rootmodule.Count - ))
- {
- strb.Append("}");
- }
- else
- {
- strb.Append("},");
- }
- }
- strb.Append("]");
- return strb.ToString();
- }
- }
第六步:执行效果
还有皮肤,编辑,拓展等扩展属性,有需要可以再研究。
C#应用jstree实现无限级节点的方法的更多相关文章
- 查找html节点的方法
document.firstChild document.documentElement(兼容性较好) 查找body节点的方法 document.firstChild.lastChild docume ...
- OSG中找到特定节点的方法
OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...
- OSG中找到特定节点的方法(转)
OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...
- 修复jquery.treeview的增加子节点的方法的bug
1.修复理由 在一个android项目中用到了treeview控件(本来自己通过android的原生api实现了一个http://www.cnblogs.com/Mr-Nobody/p/3527688 ...
- jQuery获取父级、兄弟节点的方法
一.jQuery的父节点查找方法 $(selector).parent(selector):获取父节点 $(selector).parentNode:以node[]的形式存放父节点,如果没有父节点,则 ...
- [SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
T-Sql 递归查询(给定节点查所有父节点.所有子节点的方法) -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ ...
- [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)
Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...
- ThinkPHP自动填充实现无限级分类的方法
这篇文章主要介绍了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP项目开发中非常实用的一个技巧,需要的朋友可以参考下 本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是 ...
- js项目第一课:获取节点的方法有三个
第一种方法: demo.html代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...
随机推荐
- Hierarchical RNN
https://blog.csdn.net/liuchonge/article/details/73610734 https://blog.csdn.net/triplemeng/article/de ...
- difference among String,StringBuilder,StringBuffer
difference among String,StringBuilder,StringBuffer String常用构造函数 String(byte[] bytes) String(byte[] b ...
- HDU 4639 Hehe 2013 Multi-University Training Contest 4
题意大致如下:屌丝找女神聊天,女神回了一句 hehe ,而我们都知道 Hehe 有两个意思,一个就是 Hehe ,另外一个则是 wqnmlgb (我去年买了个表) ,所以屌丝很纠结,于是开始思考到底女 ...
- Java 源码解析
Object equals方法对比两个对象是否是内存中同一个物理地址 hashCode规定,当两个对象相等时,必须返回相等的hashCode,所以重写equals方法有必要重写hashCode方法 如 ...
- linux---三剑客
linux的三剑客分别为awk/sed/grep,是运维人员必不可少的常用命令. 一:awk取列 awk ‘{print $1 “ ” $2}’ old.txt awk /aaa/ old.txt 二 ...
- 对中文进行MD5加密的注意事项(Java版,编码问题)
http://blog.csdn.net/tongdao/article/details/20690187 在工作中需要和第三方进行Http通信,在通信内容中有几个参数涉及到了中文.自己在进行MD5加 ...
- HIDL学习笔记
一.HIDL简单介绍 HIDL是Android8.0新出的一个技能,以service和client的方式实现hal接口,目的是想使Android系统和BSP解绑,使系统升级更加方便.HIDL的使用方法 ...
- Gravitee.io Access Management 组件
Access Management组件在Gravitee.io 主要是进行认证以及权鉴的处理,支持oauth2 以及openid connect 等协议,同时好多功能已经集成在ui 管理界面上了,还是 ...
- 数学 它的内容,方法和意义 第二卷 (A. D. 亚历山大洛夫 著)
第五章 常微分方程 1. 绪论 2. 常系数线性微分方程 3. 微分方程的解及应注意的几个方面 4. 微分方程积分问题的几何解释.问题的推广 5. 微分方程解的存在性与唯一性方程的近似解 6. 奇点 ...
- python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...