生成树形结构的json字符串代码(c#)供前端angular tree使用.
框架是使用EF6.0.可以针对返回的值使用Newtonsoft.Json.dll(百度搜一下)来对返回的值序列化为json字符串,如果对以下值那就是使用JsonConvert.SerializeObject(functionTree),啥都不说,上实例代码
/// <summary>
/// init tree
/// </summary> /// <returns></returns>
public List<FunctionInfoMapping> LoadTree()
{
List<FunctionInfoMapping> listTree = InitTree();
return listTree;
//return JsonConvert.SerializeObject(list);
}
/// <summary>
/// init tree find top menu
/// </summary>
/// <returns></returns>
private List<FunctionInfoMapping> InitTree()
{
RightsContext rightContext = new RightsContext();
var treeList = (from a in db.FunctionInfoes
join b in db.FunctionInfoes
on a.ParentId equals b.FunctionId
select new FunctionInfoMapping
{
ID=a.FunctionId,
Title=a.FunctionName,
FunctionType=a.FunctionType,
ParentId=b.FunctionId,
ParentName=b.FunctionName,
FunctionPath=a.FunctionPath,
Description=a.Description,
SortId=a.SortId,
}).Union
(from a in db.FunctionInfoes
where a.ParentId == -
select new FunctionInfoMapping
{
ID = a.FunctionId,
Title = a.FunctionName,
FunctionType = a.FunctionType,
ParentId = -,
ParentName = "",
FunctionPath = a.FunctionPath,
Description = a.Description,
SortId = a.SortId,
});
var newTree = treeList.Union(treeList);
//List<FunctionInfoMapping> reeList= treeList.ToList<FunctionInfoMapping>()
List < FunctionInfoMapping > rootNode = new List<FunctionInfoMapping>();
foreach (var plist in newTree.Where(t => t.ParentId == -))
{
FunctionInfoMapping node = new FunctionInfoMapping();
node.ID = plist.ID;
node.Title = plist.Title;
node.FunctionType = plist.FunctionType;
node.ParentId = plist.ParentId;
node.ParentName = plist.ParentName;
node.FunctionPath = plist.FunctionPath;
node.Description = plist.Description;
node.SortId =plist.SortId;
node.Nodes = CreateChildTree(newTree.AsQueryable<FunctionInfoMapping>(), node);
rootNode.Add(node);
}
return rootNode;
}
/// <summary>
/// recursive
/// </summary>
/// <param name="TreeList"></param>
/// <param name="jt"></param>
/// <returns></returns>
private List<FunctionInfoMapping> CreateChildTree(IQueryable<FunctionInfoMapping> TreeList, FunctionInfoMapping parentId)
{
int keyid = parentId.ID;//root id
List<FunctionInfoMapping> nodeList = new List<FunctionInfoMapping>();
var children = TreeList.Where(t => t.ParentId == keyid);
foreach (var chl in children)
{
FunctionInfoMapping node = new FunctionInfoMapping();
node.ID = chl.ID;
node.Title = chl.Title;
node.FunctionType = chl.FunctionType;
node.ParentId = chl.ParentId;
node.ParentName = chl.ParentName;
node.FunctionPath = chl.FunctionPath;
node.Description = chl.Description;
node.SortId = chl.SortId;
node.Nodes = CreateChildTree(TreeList, node);
nodeList.Add(node);
}
return nodeList;
}
返回的结构如下
[
{
"id": 2,
"title": "Fundamental",
"functiontype": 1,
"parentId": -1,
"parentname": "",
"functionpath": "/Html/Fundamental",
"description": "fundamental menu link",
"sortid": 0,
"nodes": []
},
{
"id": 3,
"title": "Auth Manager",
"functiontype": 1,
"parentId": -1,
"parentname": "",
"functionpath": "/Html/Auth",
"description": " auth manager link ",
"sortid": 0,
"nodes": [
{
"id": 4,
"title": "Role Manager",
"functiontype": 2,
"parentId": 3,
"parentname": "Auth Manager",
"functionpath": "/Html/Auth/roles.html",
"description": " roles manager page ",
"sortid": 0,
"nodes": [
{
"id": 10,
"title": "Add Role",
"functiontype": 3,
"parentId": 4,
"parentname": "Role Manager",
"functionpath": null,
"description": null,
"sortid": 0,
"nodes": []
},
{
"id": 12,
"title": "Delete role",
"functiontype": 3,
"parentId": 4,
"parentname": "Role Manager",
"functionpath": null,
"description": null,
"sortid": 0,
"nodes": []
}
]
},
{
"id": 5,
"title": "Page Manager",
"functiontype": 2,
"parentId": 3,
"parentname": "Auth Manager",
"functionpath": "/Html/Auth/pages.html",
"description": "pages permission manager page",
"sortid": 0,
"nodes": []
}
]
}
]
生成树形结构的json字符串代码(c#)供前端angular tree使用.的更多相关文章
- Delphi中根据分类数据生成树形结构的最优方法
一. 引言: TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...
- C#生成树形结构泛型类
C#生成树形结构泛型类,使用方法: ToTree<ShowMessageUpdatesTableTreeViewModel>.ToDo(models) public class ToTre ...
- 树形菜单的json字符串的拼接
最近在学习权限管理, 要用到树形按钮, 但是字符串的拼接是一个难理解的问题, 然后从网上找了一个从前台用js来遍历组成这个json字符串, 很好! 但是没看懂... var data = [ {&qu ...
- EasyUI_tree根据数据库数据生成树形结构JSON格式
@Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...
- EasyUI使用tree方法生成树形结构加载两次的问题
html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...
- servlet+ajax+json字符串后台传入,前端解析并把数据循环填入表格实例
写在前面:1.源代码来源于博客http://blog.sina.com.cn/u/2904067371 ,在此基础上对于前端代码稍作更改,把传过来的数据解析并传入表格2.json解析,用eval()3 ...
- 树形结构JSON的实现方法
在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项.目前市场上常见的JavaScript框架及组件库中均包含自己的树 ...
- java中实现无限层级的树形结构
本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...
- GridView 树形结构分组的功能
在“会飞的鱼”博客中看到GridView实现树形结构的代码,经过修改,添加了树形结构中的复选框功能,欢迎吐槽. 源地址:http://www.cnblogs.com/chhuic/archive/20 ...
随机推荐
- 玩转JavaScript OOP[0]——基础类型
前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...
- Entity Framework 基础知识走马观花
本文目录: 一.EF中的edmx文件探秘 二.EF中的代理模式探秘 三.EF中的延迟加载与即时加载 一.EF中的edmx文件 1.1 emdx文件本质:一个XML文件 (1)通过选择以XML方式打开e ...
- 人才市场的IT职位分析
最近要找长沙的工作,于是通过湖南人才市场搜索了一下职位.结果得到的数据让我很难比较,作为一个 IT 业滚爬了多年的程序员,对这样的搜索结果很不满意.于是,我不得不自己来整理数据了.本文内容包括:网页数 ...
- 完成AngularJS with MVC 5, Web API 2项目
经过接近两个月的日夜奋战,完成AngularJS with MVC 5, Web API 2的项目,这也是进入公司以后最大的一个项目,从项目需求.用户Prototype/Demo,招人,开发完成,可谓 ...
- Echarts3 关系图-力导向布局图
因为项目需要,要求实现类似力导图效果的图,我就瞄上了echarts. 注意事项1:由于我的项目要部署到内网,所以js文件要在本地,网上大多力导图都是echarts2的,而其又依赖zrender基础库, ...
- angularjs UI Libraries
angularjs UI Libraries ● ng-bootstrap is currently available. ● PrimeNG has largest number of compon ...
- python中configparser模块
python中的configparse模块的使用 主要用来解析一些常用的配置,比如数据配置等. 例如:有一个dbconfig.ini的文件 [section_db1] db = test_db1 ho ...
- es6学习笔记一数组(中)
接着上一篇,给大家再分享一些数组的其他方法.大家也可以去点击这里学习数组更多的方法 concat方法: 概述: concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回. ...
- Android仿微信二维码扫描
转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...
- codeforces C. Vanya and Scales
C. Vanya and Scales Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w10 ...