首页 新闻 会员 周边

求大神帮忙!!!ASP.NET 无限级分类 中的删除

0
悬赏园豆:100 [已解决问题] 解决于 2012-06-09 21:50

根据网上的源码,做一个无限级分类,添加已经实现了,就卡在删除这里了。
我想实现的是:删除目录时,若其下有子目录,一并删除,这个应该怎么实现
我是这样想的:
//取得要删除的那条记录的ClassID
string FirstClassID = content.ClassID;
List<string> classID = new List<string>();
using (OleDbConnection conn = new OleDbConnection(connString))
{
      conn.Open();
      using (OleDbCommand cmd = conn.CreateCommand())
      {
            cmd.CommandText = "select ClassID from Content_Class where ClassParents = '" + FirstClassID + "'";
             using (OleDbDataReader reader = cmd.ExecuteReader())
              {
                     if (reader.Read())
                     {
                          string classid = reader.GetString(reader.GetOrdinal("ClassID"));
                           classID.Add(classid);
                            classID.Add(FirstClassID);
                           //不懂怎么让它一直这样执行下去,直到它不包含子目录为止
                      }
                }
           }
       }

源码在这:http://115.com/file/beo6lyfl

徐滔的主页 徐滔 | 初学一级 | 园豆:3
提问于:2012-06-09 13:45
< >
分享
最佳答案
0

提供一个思路

string FirstClassID = content.ClassID;
            List<string> classID = new List<string>();
            using (OleDbConnection conn = new OleDbConnection(connString))
            {
                List<string> deletingClassId = new List<string>();
                GetDeletingClassID(FirstClassID,conn,ref deletingClassId);
            }

 private void GetDeletingClassID(String classId, OleDbConnection conn,ref List<string> deletingClassId)
        {
            
            using (OleDbCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = "select ClassID from Content_Class where ClassParents = '" + classId + "'";
                using (OleDbDataReader reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        string classidResult = reader.GetString(reader.GetOrdinal("ClassID"));
                        if (String.IsNullOrWhiteSpace(classidResult))
                        {
                            return;
                        }
                        else
                        {
                            deletingClassId.Add(classidResult);
                            GetDeletingClassID(classidResult,conn,ref deletingClassId);
                        }
                    }
                }
        }
碧落星痕 | 小虾三级 |园豆:708 | 2012-06-09 18:23

我要做的和你这个一样,你把表结构说明一下发给我吧。1071255597

← XiaoMing → | 园豆:202 (菜鸟二级) | 2013-05-13 19:46
其他回答(4)
0

你既然已经得到了要删除节点的id,那就可以直接用一条sql语句就可以删掉该节点的所有子节点啊

delete from content_class where classparents=id

收获园豆:40
psforever | 园豆:461 (菜鸟二级) | 2012-06-09 14:42
0

循環 要刪除的目錄,通過上面的語句刪除。

收获园豆:40
無限遐想 | 园豆:3740 (老鸟四级) | 2012-06-09 15:58

你這個是無限級的,就這一些代碼,只能看到是2級哦。無限級的,最好用遞歸。

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-06-09 16:00
0

需要用到树的遍历, 即删除节点时,将它的子节点列表以递归的形式返回,可以放到List里,然后删除即可。

收获园豆:40
张占岭 | 园豆:464 (菜鸟二级) | 2012-06-09 16:35
0

我现在也在做一个无限级,表结构我不懂。1071255597

← XiaoMing → | 园豆:202 (菜鸟二级) | 2013-05-13 19:45

你把你的表结构发给我吧,我现在也要做这个,不懂,查了好多也不能实现,感觉你这个还是可以的。1071255597

支持(0) 反对(0) ← XiaoMing → | 园豆:202 (菜鸟二级) | 2013-05-13 20:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册