ajax父子关系同级的上一个,C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id...

紧接上一篇,将List

---------------------

步骤:

1. 建 Menu实体结构

public class Menu

{

///

/// ID

///

public int ID { get; set; }

///

/// 菜单名

///

public string MenuName { get; set; }

///

/// 父菜单

///

public int ParentID { get; set; }

}

2. 建Tree 的数据结构(用来做树形结构的数据返回)

public class Tree

{

///

/// ID

///

public int ID { get; set; }

///

/// 菜单名

///

public string MenuName { get; set; }

///

/// 父菜单

///

public int ParentID { get; set; }

///

/// 子节点集合

///

public List Children { get; set; }

}

3. 写方法,递归遍历,将Menu实体值赋值给Tree

//根据父节点获取子节点

public static List GetChildTree(List

{

List tree = new List();

List

foreach (var item in ChildList)

{

Tree treeB = new Tree();

treeB.ID = item.ID;

treeB.MenuName = item.MenuName;

treeB.Children = GetChildTree(list,item.ID);

tree.Add(treeB);

}

return tree;

}

public static List

{

var childList = list.Where(x => x.ParentID == Id).ToList();

return childList;

}

4. 准备数据,方法调用

// 准备要处理的数据

List

listB.Add(new Menu { ID = , MenuName = "菜单1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1.1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.2.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单2", ParentID = });

var result = GetChildTree(listB, );

string jsonB = new JavaScriptSerializer().Serialize(result);

5. 转换后的树形结构数据结果图示

ajax父子关系同级的上一个,C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id..._第1张图片

-----------------------开发过程中遇到的问题---------------------------------

从别人的博客看到这种方式,很高兴,以为改改,很快就可以实现工作中的功能,结果发现还欠缺点东西,就是要传入的父节点Id值给定的是0  ,写死的。

而我要传入的这个Id值要是动态的,要根据传入的List集合,找出这个集合数据里面的根节点的Id值。  在这上面的代码中并没有给出, 于是我开始折腾,最终从别人的js 代码中找到了别人的解决思路。

我的解决方法如下,希望也能够帮助一些人:

// 准备要处理的数据

List

listB.Add(new Menu { ID = , MenuName = "菜单1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1.1", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.1.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单1.2.2", ParentID = });

listB.Add(new Menu { ID = , MenuName = "菜单2", ParentID = });

//找出集合里面的根节点的Id

HashSet parentIds = new HashSet();

HashSet childIds = new HashSet();

foreach (var item in listB)

{

childIds.Add(item.ID);

parentIds.Add(item.ParentID);

}

parentIds.ExceptWith(childIds);

int rootId = parentIds.First();

var result = GetChildTree(listB, rootId);

最后,发表一下感慨,C# 写的代码真的少,7、8行就解决了!

关于mysql中数据存储复合树形结构,查询时结果按树形结构输出

1.主要思想:根据已有数据,规则性的造数据 select * FROM(select lId,strName,lId as lParentId,-1 as orderIdx from tbClassi ...

js中把ajax获取的数据转化成树状结构(并做成多级联动效果)

1.首先通过ajax获取数据,此处省略,直接贴出获取到的数据格式 var arr = [{ id: 1, name: "一级标题", pid: 0 }, { id: 2, name ...

Oracle恢复删除数据 &;&; connect by 树形结构查询

1.一个表中根据以父子级别关系查询显示出来(如图) select t.* from department t CONNECT BY PRIOR t.depid=t.supdepid ; --这样也可以 ...

Vue组件模板形式实现对象数组数据循环为树形结构

数据结构为数组中包含对象--树形结构,用Vue组件的写法实现以下的效果: 树形列表,缩进显示层级,第5级数据加底色,数据样式显色,点击展开折叠数据.本文为用Vue实现方式,另有一篇为用knockout ...

js把json数据转化成树形数据

/*转化函数*/ function(data, attributes) { let resData = data; let tree = []; for(let i = 0; i < resDa ...

JavaScript 将行结构数据转化为树形结构,可提供给常用的tree插件直接使用(高效转化方案)

前台接收到的数据格式 var rows=[{ parent: 'root', id: 'DC', title: '集团' }, { parent: 'DC', id: '01', title: '上海 ...

JS 将有父子关系的数组转换成树形结构数据

将类似如下数据转换成树形的数据 [{ id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1', ...

SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪

来源:http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html  本文主要介绍SQL Server中记录数据变更的四个方法:触发器 ...

ionic中将service中异步返回的数据赋值给controller的$scope

1.service中异步获取数据实例 angular.module('starter.services', []) .factory('Chats', function($http,$q) {//定义 ...

随机推荐

I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking

/******************************************************************** * I.MX6 mfgtool2-android-mx6q- ...

暴力求解——素环数 Prime Ring Problem ,UVa 524

Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers i ...

PHP Sessions

PHP Sessions PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置.Session 变量存储单一用户的信息,并且对于应用程序中 ...

java调优随记-java对象大小

在java中,基本数据类型的大小是固定.但是java对象的大小是不固定的,需要通过计算. 在java中,一个空对象(没有属性和方法的对象)在堆中占用8byte,比如 Object obj = new ...

poi实现Excel导出

最近做了一个导出Excel的小功能,以前没接触过,现在分享下自己的代码,想让各位帮忙看看有啥地方可以优化,也方便自己以后查阅... 首先是excelAction的代码: /** * excelActi ...

ckplayer

ckplayer 的使用基本功能实现(一) 有个项目里用到视频播放功能,虽然是国产的插件,但我觉得做的还是不错,而且是免费使用,顺便支持下国内的一些项目(O(∩_∩)O~). 一.首先去官网下载 插件 ...

PHPCMS V9表单向导调用及分页

参考资料如下:v9_form_tlj为你的表单数据表,`flqh`,`title`,`sj`,`username`,`datetime` 为你表单内的字段,page="$_GET" ...

SSD: Single Shot MultiBoxDetector英文论文翻译

SSD英文论文翻译 SSD: Single Shot MultiBoxDetector 2017.12.08    摘要:我们提出了一种使用单个深层神经网络检测图像中对象的方法.我们的方法,名为SSD ...

利用PCA降维

参考:- Machine Learning in Action 一. 基本思想  PCA(Principal Component Analysis),主成分分析.是目前应用 ...

用 pyinstaller 打包含xpinyin 库的Python程序

在文章用 pyinstaller 打包含有 pinyin 库的程序中,给出了如何使用pyinstaller 打包含xpinyin 库的Python程序的方法,能生成可运行的exe文件.本文将会给出 ...

你可能感兴趣的:(ajax父子关系同级的上一个)