下载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实现无限级节点的方法的更多相关文章

  1. 查找html节点的方法

    document.firstChild document.documentElement(兼容性较好) 查找body节点的方法 document.firstChild.lastChild docume ...

  2. OSG中找到特定节点的方法

    OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...

  3. OSG中找到特定节点的方法(转)

    OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...

  4. 修复jquery.treeview的增加子节点的方法的bug

    1.修复理由 在一个android项目中用到了treeview控件(本来自己通过android的原生api实现了一个http://www.cnblogs.com/Mr-Nobody/p/3527688 ...

  5. jQuery获取父级、兄弟节点的方法

    一.jQuery的父节点查找方法 $(selector).parent(selector):获取父节点 $(selector).parentNode:以node[]的形式存放父节点,如果没有父节点,则 ...

  6. [SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    T-Sql 递归查询(给定节点查所有父节点.所有子节点的方法)   -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ ...

  7. [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)

    Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...

  8. ThinkPHP自动填充实现无限级分类的方法

    这篇文章主要介绍了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP项目开发中非常实用的一个技巧,需要的朋友可以参考下   本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是 ...

  9. js项目第一课:获取节点的方法有三个

    第一种方法: demo.html代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

随机推荐

  1. Oracle使用笔记(一)

    目录 一.创建表: 二.编辑表数据: 三.Oracle基本数据类型: (一) 字符串类型 1.1:CHAR类型 CHAR(size [BYTE | CHAR]) 1.2: NCHAR类型 1.3 VA ...

  2. Hierarchical RNN

    https://blog.csdn.net/liuchonge/article/details/73610734 https://blog.csdn.net/triplemeng/article/de ...

  3. currentStyle&getComputedStyle获取属性

    方法如下: function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; // IE 中的方法 } ...

  4. linux lamp编译环境安装

    apache 安装:http://blog.csdn.net/wplblog/article/details/52172128 编译安装 mysql安装:http://www.centoscn.com ...

  5. 【HDOJ4635】【Tarjan缩点+思维】【经典】

    http://acm.hdu.edu.cn/showproblem.php?pid=4635 Strongly connected Time Limit: 2000/1000 MS (Java/Oth ...

  6. POJ1417 True Liars

    题意 Language:Default True Liars Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6392 Accep ...

  7. mongodb千万级写入怎么优化

    从mysql数据库通过java程序导入单表1300w到mongodb,花了大概50分钟,前1000w条数据中每100w条大概要3分钟,之后的300多w条就差不多每100w条要5到6分钟,之后再从其他的 ...

  8. File file = new File("路径名") 路径名的2种写法

    项目的结构:相同颜色是同级的 bean的配置文件的读取和一般文件的读取有点差别的 public static void getValue(String key){ //传入"time&quo ...

  9. java_oop_类与对象

    类与对象包方法 ========================================= 对象的概念类与对象的关系    万物皆对象        属性(名词)            对象的 ...

  10. C# string 转 bool

    bool _b = Convert.ToBoolean("False"); "_b => false" // // 摘要: //     将逻辑值的指定字 ...