dhl:使用递归获取N级子目录列表(附数据库结构)
附数据库结构:
代码:
/// <summary>
/// 递归获取子目录列表
/// </summary>
/// <param name="SortList">用于存储全部新的列表。</param>
/// <param name="parentId">上一级的id</param>
/// <param name="Counter">计数器,用于前台排版</param>
/// <returns></returns>
private List<CMS_Catalog> GetChildSort(List<CMS_Catalog> SortList, int parentId, int Counter)
{
var v = from l in content.CMS_Catalog where l.ParentId == parentId && l.AppId==1 select l;
List<CMS_Catalog> _list = v.ToList();
if (_list.Count > 0)
{
Counter++;
for (int i = 0; i < _list.Count; i++)
{
string temp = string.Empty;
for (int m = 0; m < Counter; m++)
{
temp += " ";
}
_list[i].Extended1 = temp; //存储列表的前台样式
SortList.Add(_list[i]);
GetChildSort(SortList, Convert.ToInt32(_list[i].ID), Counter);
}
}
return SortList;
}
/// 递归获取子目录列表
/// </summary>
/// <param name="SortList">用于存储全部新的列表。</param>
/// <param name="parentId">上一级的id</param>
/// <param name="Counter">计数器,用于前台排版</param>
/// <returns></returns>
private List<CMS_Catalog> GetChildSort(List<CMS_Catalog> SortList, int parentId, int Counter)
{
var v = from l in content.CMS_Catalog where l.ParentId == parentId && l.AppId==1 select l;
List<CMS_Catalog> _list = v.ToList();
if (_list.Count > 0)
{
Counter++;
for (int i = 0; i < _list.Count; i++)
{
string temp = string.Empty;
for (int m = 0; m < Counter; m++)
{
temp += " ";
}
_list[i].Extended1 = temp; //存储列表的前台样式
SortList.Add(_list[i]);
GetChildSort(SortList, Convert.ToInt32(_list[i].ID), Counter);
}
}
return SortList;
}
调用 :
/// <summary>
/// 目录管理
/// </summary>
/// <returns></returns>
public ActionResult CMSSortManage()
{
List<CMS_Catalog> SortList = new List<CMS_Catalog>();
ViewData["SortList"] = GetChildSort(SortList,0,0);
return View();
}
/// 目录管理
/// </summary>
/// <returns></returns>
public ActionResult CMSSortManage()
{
List<CMS_Catalog> SortList = new List<CMS_Catalog>();
ViewData["SortList"] = GetChildSort(SortList,0,0);
return View();
}
注意点: 循环不能用foreach(foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等)。)
否则会报错误:集合已修改;可能无法执行枚举操作(进来看)
前台页面:
<%
List<PingCoCMS.Model.CMS_Catalog> SortList = ViewData["SortList"] as List<PingCoCMS.Model.CMS_Catalog>;
foreach (var item in SortList)
{
Response.Write(item.Extended1+"-");
Response.Write(item.Name);
Response.Write("<br />");
}
%>
List<PingCoCMS.Model.CMS_Catalog> SortList = ViewData["SortList"] as List<PingCoCMS.Model.CMS_Catalog>;
foreach (var item in SortList)
{
Response.Write(item.Extended1+"-");
Response.Write(item.Name);
Response.Write("<br />");
}
%>
最终样式:
-家用电器
-大 家 电
-洗衣机
-家庭音响
-空调
-洗衣机
-生活电器
-吸尘器
-电熨斗
-取暖电器
-加湿器
-电话机
-厨房电器
-电磁炉
-大 家 电
-洗衣机
-家庭音响
-空调
-洗衣机
-生活电器
-吸尘器
-电熨斗
-取暖电器
-加湿器
-电话机
-厨房电器
-电磁炉