前端应该有很多控件可以递归菜单表数据 但是自己在后端也可以把数据封装成树形结构的数据
数据结构
public class T_ADC_Permission : BaseModel
{
public string Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string ParentId { get; set; }
public bool IsAuthorize { get; set; }
public string Descript { get; set; }
public string Remark { get; set; }
public string Remark2 { get; set; }
public bool IsDelete { get; set; }
public byte[] Version { get; set; }
/// <summary>
/// 0:菜单级 , 1:按钮级
/// </summary>
public int Type { get; set; }
/// <summary>
/// 子权限
/// </summary>
public virtual List<T_ADC_Permission> SonPermissions{get;set;}
}
封装
public List<T_ADC_Permission> ShowPermissionsListWithTree(bool isMenu)
{
using (SqlConnection con = BaseDAL.ConnectionFactory())
{
string sql = @"select * from T_ADC_Permission";
if (isMenu)
sql += " where Type=0 ";
List<T_ADC_Permission> list = con.Query<T_ADC_Permission>(sql).ToList();
List<T_ADC_Permission> result = new List<T_ADC_Permission>();
result.AddRange(list.Where(p => p.ParentId.Equals("-1")).ToList());
foreach (var el in result)
{
AddPermission(list, el);
}
return result;
}
}
/// <summary>
/// 从某个根节点递归出其下所有子节点
/// </summary>
/// <param name="list">所有权限</param>
/// <param name="curPermission">当前权限</param>
public void AddPermission(List<T_ADC_Permission> list, T_ADC_Permission curPermission)
{
List<T_ADC_Permission> sonPermissions = list.Where(p => p.ParentId.Equals(curPermission.Id)).ToList();
curPermission.SonPermissions = sonPermissions;
foreach (var p in sonPermissions)
{
AddPermission(list, p);
}
}