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 ...
随机推荐
- ZOJ - 4081:Little Sub and Pascal's Triangle (结论)
Little Sub is about to take a math exam at school. As he is very confident, he believes there is no ...
- AE1
i2.1 导入四种方式: 1.文件->导入 2.项目窗口空白区域双击 3.空白区域右键 4 ctrl+i 常用键: ctri+i ctrl shift alt delete 2.2移动属 ...
- 单调栈运用2----(xdoj-1156)
#include <bits/stdc++.h> using namespace std; ; int num[N]; int len; int top; int t; deque < ...
- Codeforces Round #519
题目链接:传送门 A. Elections (思维+暴力) 思路: 从最小的k开始枚举就好了- -. #include <bits/stdc++.h> using namespace ...
- PTA——龟兔赛跑
PTA 7-39 龟兔赛跑 #include <stdio.h> int main () { ,turtle=,minute,rest=-,run=; //rest为0或负时,兔子休息,r ...
- webapi core2.1 IdentityServer4.EntityFramework Core进行配置和操作数据
https://identityserver4.readthedocs.io/en/release/quickstarts/8_entity_framework.html 此连接的实践 vscode ...
- D. The Fair Nut and the Best Path 树形dp (终于会了)
#include<bits/stdc++.h> #define int long long using namespace std; ; int a[maxn]; int dp[maxn] ...
- 【BZOJ1082】【SCOI2005】栅栏
暴力出奇迹…… 原题: 农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材.于是农夫约翰到木材店购买木材.可是木材店老板说他这里只剩下少部分大规格的木板了.不过约翰可以购买这些木 ...
- linux 条件
1.文件状态测试-d 目录 -r 可读-f 常规文件 -w 可写-L 符号连接 -x 可执行-s 文件长度大于0,非空 -u 文件有suid位设置 示例: [ -s haison.c ] 0表示成功, ...
- GraphQL Gateway Architectures
转自: https://tomasalabes.me/blog/graphql/node/microservices/2018/08/11/graphql-architectures.html Gra ...