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 ...
随机推荐
- opencv的DMatch
1.DMatch是描述图像匹配信息的类 /** @brief Class for matching keypoint descriptors query descriptor index, train ...
- Sonar理论篇
一.Sonar是什么 Sonar是一个代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java.C#.JavaScript等二十余种编程语言的代码质量管理与检测. Son ...
- background-position 的设置
不应该按移动端的实际宽度或高度设置,应该按切出来图片的宽度设置,比如精灵图中有两个图片,各宽500px,那position应该设置为500px 0:而不是250px 0
- Web安全 概述
转载自 “余弦”大牛的评论 https://www.zhihu.com/question/21606800 大牛的个人blog:http://evilcos.me/ 作者:余弦链接:https://w ...
- C++ 作业 (循环链表构建队列)
/* author screen name Andromeda_Galaxy; chinese name 杨子俊 */ #include<bits/stdc++.h> using name ...
- django实现api跨域请求访问
第一步:安装 django-cors-headers pip install django-cors-headers 第二步:配置settings.py文件 --------------------- ...
- Be Careful When Using Bit Field
Below illustration is based on MSP430, IAR. See the implementation below. typedef struct { uint8_t g ...
- ESB雏形 -- 项目企业服务总线初始
今天要厚着脸皮给大家推荐一个自己做的通信中间件——ServiceAnt,目前已经在我们团队的两个产品线上投入了使用. ServiceAnt是什么 它最初的定位是ESB(企业服务总线),但目前还没有达到 ...
- nginx配置.htaccess伪静态
https://blog.csdn.net/moqiang02/article/details/37695775
- APACHE如何里一个站点绑定多个域名?用ServerAlias servername
APACHE2如何里一个站点绑定多个域名?用ServerAlias以前很笨,要使多个域名指向同一站点总是这样写: <VirtualHost *:80>ServerAdmin i@kuigg ...