问题描述:目录级联删除
问题解析:什么是目录的级联删除?
这个问题可以转化成删除树中的节点的问题,即当删除树中的一个节点时,需要删除该节点下的所有子节点。
通过对上图的观察,要实现级联删除的关键一步是构造一个要删除的类型主键(SortId)列表
在ASP.NET中我们用ArrayList实现,ArrayList存在于System.Collections命名空间。具体算法如下:
#region 构造要删除的类型主键(sortId)数组
public ArrayList CreateList(int sortId)
{
ArrayList sortIdList = new ArrayList();
sortIdList.Add(sortId);
for (int i = 0; i < sortIdList.Count; i++)
{
if (aDAL.HasChild(int.Parse(sortIdList[i].ToString())))
{
for (int j = 0; j < aDAL.GetChildMenu(int.Parse(sortIdList[i].ToString())).Rows.Count; j++)
{
sortIdList.Add(int.Parse(aDAL.GetChildMenu(int.Parse(sortIdList[i].ToString())).Rows[j][0].ToString()));
}
}
else
{
lbMessage.Text = "对于没有子目录的节点也要建立一个数组记录,以便以此为依据删除与之关联的文章!";
}
}
return sortIdList;
}
#endregion