下载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. Is this Sentence Difficult? Do you Agree? -paper

    术语: 数据lemma:词根,词元(词的基本形式,如名词单数或动词的不定式形式) content words:实词part-of-speech:词性object-relative clauses an ...

  2. L2-008 最长对称子串 (25 分)

    对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11. 输入格式: 输入在一 ...

  3. (5)MySQL的查询:模糊查询(通配符查询like)、限制符查询(limit)、排序查询(order by)、分组查询(group by)、(子查询)

    注意事项 指令语法的优先级: where > group by >order by > limit 例:select count(id) as cnt,age from tablen ...

  4. Go Example--变参函数

    package main import "fmt" func main() { sum(1,2) sum(1,2,3) nums := []int{1,2,3,4} //nums. ...

  5. 【BZOJ3238】【AHOI2013】差异

    sam好,好写好调好ac! 原题: 图片题面好评 2<=N<=500000 在syq大神的指点下终于理解一道后缀自动姬了quq (其实是因为这道题的dp主要是在后缀树(就是拓扑序)上搞树形 ...

  6. 【shell编程】之基础知识-流程控制

    和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); ...

  7. gearman kubernetes 运行

    备注: 使用的是golang 版本的实现,同时官方也提供了一个k8s 的helm 部署charts,我 没有使用这个helm,而是通过kompose 这个工具直接转换的 docker-compose ...

  8. oracle-sql分析练习

    http://blog.chinaunix.net/uid-13552913-id-3028644.html Oracle 修改字段顺序的两种方法 一 如果要修改字段顺序,一般情况可以使用以下步骤: ...

  9. TweenMax 动画库,知识点

    官方地址:https://greensock.com/tweenmax github 地址:https://github.com/greensock/GreenSock-JS 比较好的介绍文章: ht ...

  10. roadhog 知识点

    roadhog 是一个 cli 工具,提供 server. build 和 test 三个命令,分别用于本地调试和构建,并且提供了特别易用的 mock 功能.命令行体验和 create-react-a ...