递归 删除层级记录
来源:互联网 发布:淘宝首页框架设计 编辑:程序博客网 时间:2024/05/20 23:02
PrimaryKey UpLevelCompCode UpLevelCompName CurrentLevelCompCode CurrentLevelCompName CurrentLevel
1 0 0 NULL NULL 0
2 0 0 1 1 1
3 0 0 2 2 1
4 1 1 3 3 2
5 1 1 4 4 2
6 3 3 5 5 3
7 3 3 6 6 3
//递归 删除层级记录
public static void Delete(string code,int level,string sign)
{
if(level>0)
{
System.Data.DataSet ds = bll.SelectDepartLevelMaintainByFilter(" and "+sign+" = '"+code+"' and CurrentLevel="+level);
if(ds!=null)
{
if(ds.Tables[0]!=null)
{
if(ds.Tables[0].Rows.Count>0)
{
foreach(System.Data.DataRow dr in ds.Tables[0].Rows)
{
string _code = dr["CurrentLevelCompCode"].ToString().Trim();
int _level = Convert.ToInt32(dr["CurrentLevel"].ToString().Trim());
long _pk = Convert.ToInt64(dr["PrimaryKey"].ToString().Trim());
Delete(_code,_level+1,"UpLevelCompCode");
bll.DeleteDepartLevelMaintain(_pk);
}
}
}
}
}
}
DepartLevelMaintainBLL bll = new DepartLevelMaintainBLL ();
System.Data.DataRow dr = bll.SelectDepartLevelMaintainByFilter(" and PrimaryKey = "+2).Tables[0].Rows[0];
string _code = dr["CurrentLevelCompCode"].ToString().Trim();
int _level = Convert.ToInt32(dr["CurrentLevel"].ToString().Trim());
TestMethod.Delete(_code,_level,"CurrentLevelCompCode");
实际上可以将CurrentLevel可以设计成有层级的值,这样删除的时候根据条件删除就可以了。
如:
CurrentLevel
00
001
002
00101
00102
0010101
0010102
字段设计成这样删除时就不用使用层级查找了。直接SUBSTRING(.....)=.....就可以了。
- 递归 删除层级记录
- SQL Server 递归找出父子记录,并标统计当前所在层级用户数
- PostgreSql递归包含层级level
- python--修改默认递归层级
- 递归案例4:层级打印
- python实现:递归删除文件并保存删除记录
- mysql 递归实例 父子节点层级递归
- SQL Server over和CTE的妙用(子记录根据外键递归找出父记录,并实现层级关系码)
- ASP递归层级表格数据展示
- oracle中的层级递归查询操作
- 递归查找当前对象所属的层级
- oracle递归查询(层级查询)
- shopNC分类,递归方式查询层级显示
- 利用递归形成一个层级树
- 递归遍历View的层级结构
- 不用递归,C#实现无限层级树
- 用户层级递归查询的笔记
- Test_Java_File类递归练习(按层级打印)
- 软件开发点滴
- jpa-struts-spring配置环境
- Oracle Recursive Calls 说明
- android: 设置中文字体效果的一些方法
- C#窗体控件简介-文本框控件TextBox
- 递归 删除层级记录
- 菜单事件
- 迷宫源代码
- 测试基本功训练 - Linux与Shell编程
- android Launcher——拖放功能深入研究
- GDB--Text User Interface
- 编译android 出错, java JDK版本版本切换(ubuntu)
- 加载初始化
- tableLayoutPanel: 表格布局面板