其实功能更其他的递归生成是完全相同的。
首先是在数据库创建一个数据表、需要包含ID与父ID
接下来是创建一个树结构的类,可以按照自己的需求,添加不同的字段
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace yyyu.Common.TreeList
{
//树存储实体
public class TreeObject
{
public string Id { get; set; }
public string Pid { get; set; }
public string Name { get; set; }
public string ShowName { get; set; }
public string url { get; set; }
public List<TreeObject> Children { get; set; }
}
}
然后是读取数据库的数据为dataset或者DATATABLE,这部分的代码就省略了
接下来是逻辑处理方法,
/// <summary>
/// 将DataTable获取到的值转化为树级结构list
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private List<yyyu.Common.TreeList.TreeObject> GetPNode(DataSet ds)
{
List<yyyu.Common.TreeList.TreeObject> list = new List<yyyu.Common.TreeList.TreeObject>();
if (ds.Tables[0].Rows.Count > 0)
{
//循环读取
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["Menu_ParentId"].ToString() == "-1")
{
yyyu.Common.TreeList.TreeObject tree = new yyyu.Common.TreeList.TreeObject();