using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Web;
|
|
namespace WebAPI.Utility
|
{
|
public class TreeUtil
|
{
|
public class TreeModel
|
{
|
public string id { get; set; }
|
public string title { get; set; }
|
public List<TreeModel> children = new List<TreeModel>();
|
}
|
|
#region 递归函数
|
/// <summary>
|
/// 递归函数
|
/// </summary>
|
public void digui(DataTable dt, List<TreeModel> tree, int num)
|
{
|
for (int m = 0; m < tree.Count; m++)
|
{
|
tree[m].children = new List<TreeModel>();
|
for (int i = 0; i < dt.Rows.Count; i++)//第一次循环,得到所有根节点的子集
|
{
|
var strLen = dt.Rows[i]["hnumber"].ToString().Split('.');
|
if (strLen.Length == num && dt.Rows[i]["hnumber"].ToString().Contains(tree[m].id + "."))
|
{
|
TreeModel tbjson = new TreeModel();
|
tbjson.id = dt.Rows[i]["hitemid"].ToString();
|
tbjson.title = dt.Rows[i]["hname"].ToString();
|
tree[m].children.Add(tbjson);
|
}
|
}
|
var strLens = tree[m].id.Split('.');
|
for (int i = 0; i < tree[m].children.Count; i++)
|
{
|
digui(dt, tree[m].children, strLens.Length + 2);//再次用子集去循环,拿出子集的子集
|
}
|
}
|
|
}
|
#endregion
|
|
#region 分类 树形图(根据代码展开树状图)
|
public void getTreeByLevel(DataTable dt, List<TreeModel> tree, int num)
|
{
|
for (int m = 0; m < tree.Count; m++)
|
{
|
tree[m].children = new List<TreeModel>();
|
for (int i = 0; i < dt.Rows.Count; i++)//第一次循环,得到所有根节点的子集
|
{
|
var HLevel = (int)dt.Rows[i]["hlevel"];
|
var HParentID = dt.Rows[i]["hparentid"].ToString();
|
if (HLevel == num && HParentID == tree[m].id)
|
{
|
TreeModel tbjson = new TreeModel();
|
tbjson.id = dt.Rows[i]["hitemid"].ToString();
|
tbjson.title = dt.Rows[i]["hname"].ToString();
|
tree[m].children.Add(tbjson);
|
}
|
}
|
for (int i = 0; i < tree[m].children.Count; i++)
|
{
|
getTreeByLevel(dt, tree[m].children, num + 1);//再次用子集去循环,拿出子集的子集
|
}
|
}
|
}
|
#endregion
|
}
|
}
|