http://blog.csdn.net/commandbaby/article/details/51072893
关于递归,和Combotree的数据绑定格式
效果图:
Combotree需要的Json数据格式:http://www.jeasyui.com/demo/main/tree_data1.json
实现方法:
- /* 数据(TitleInfo)
- * 【 SystemCode:1, Name:总(副)经理, 父级编码(CodeSystemParentCode):】
- * 【 SystemCode:2, Name:总工、助理, 父级编码(CodeSystemParentCode):】
- * 【 SystemCode:3, Name:副总工、部门经理(副) 父级编码(CodeSystemParentCode):】
- * 【 SystemCode:4, Name:高级项目经理, 父级编码(CodeSystemParentCode):】
- * 【 SystemCode:412, Name:技术人员, 父级编码(CodeSystemParentCode):4】
- * 【 SystemCode:411, Name:项目经理, 父级编码(CodeSystemParentCode):4】
- * 【 SystemCode:112, Name:董事长, 父级编码(CodeSystemParentCode):1】
- * 【 SystemCode:413, Name:12312, 父级编码(CodeSystemParentCode):4】
- */
- public void GetTitleInfo(HttpContext context)
- {
- string TitileTreestr = "";
- List<Model.TitleInfo> tiL = BLL.TitleInfo.GetTitleInfos();//所有数据
- List<Model.TitleInfo> tiLparent = tiL.Where(t => string.IsNullOrEmpty(t.CodeSystemParentCode)).ToList();//父级节点
- //CreateTitileTree(tiL, out TitileTreestr);//普通循环拼接方法
- CreateTitileTree(tiL, tiLparent, ref TitileTreestr);//递归
- context.Response.Write("[" + TitileTreestr + "]");//[]拼成json格式
- context.Response.End();
- }
- /// <summary>
- /// 职务树(深度只能2层)
- /// </summary>
- /// <param name="tiL">所有职务数据</param>
- /// <returns>返回Json</returns>
- public void CreateTitileTree(List<Model.TitleInfo> tiL, out string ResultTreestr)
- {
- string TitileTree = "";
- List<Model.TitleInfo> listParent = tiL.Where(t => string.IsNullOrEmpty(t.CodeSystemParentCode)).ToList(); //父级
- foreach (var itemp in listParent)//根据父级ID得到子节点
- {
- string ChildTree = "";//子节点
- TitileTree += "{\"id\":\"" + itemp.AriId + "\",\"text\": \"" + itemp.AriName + "\",\"children\":[";
- List<Model.TitleInfo> listchild = tiL.Where(t => t.CodeSystemParentCode == itemp.SystemCode ).ToList();//该父节点的子ID
- foreach (var itemc in listchild)
- {
- ChildTree += "{\"id\":\"" + itemc.AriId + "\",\"text\": \"" + itemc.AriName + "\",\"children\":[]},";
- }
- if (!string.IsNullOrEmpty(ChildTree))
- ChildTree = ChildTree.Substring(0, ChildTree.Length - 1);
- TitileTree += ChildTree;
- TitileTree += "]},";
- }
- ResultTreestr = TitileTree.Substring(0, TitileTree.Length - 1);
- }
- /// <summary>
- /// 递归获取职务树(无论多深)
- /// </summary>
- /// <param name="tiL">总节点</param>
- /// <param name="tiLparent">父节点</param>
- /// <param name="TitileTree">结果值</param>
- public void CreateTitileTree(List<Model.TitleInfo> tiL, List<Model.TitleInfo> tiLparent, ref string TitileTree)
- {
- int i = 0;
- foreach (var itemp in tiLparent)
- {
- i++;
- TitileTree += "{\"id\":\"" + itemp.AriId + "\",\"text\": \"" + itemp.AriName + "\",\"children\":[";
- List<Model.TitleInfo> child = tiL.Where(t => t.CodeSystemParentCode == itemp.SystemCode).ToList();
- if (child != null && child.Count() > 0)
- CreateTitileTree(tiL, child, ref TitileTree);
- TitileTree += "]},";
- if (i == tiLparent.Count()) //去掉最后一个节点的逗号
- TitileTree = TitileTree.Substring(0, TitileTree.Length - 1);
- }
- }