CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

求一算法(急)

楼主jxdyzwh(http://www.szsoftware.com.cn)2005-06-01 14:43:25 在 .NET技术 / ASP.NET 提问

各位老大,我想向各位求一个算法,这个问题我想了很长时间,就是关于树形菜单的一个算法,比如说父节点的id为10000000000,其子节点就为10010000000,子节点的子节点为10010100000,依似类推,也是是从子节点中得知根节点和父节点的id号,请各位指教! 问题点数:20、回复次数:5Top

1 楼huangguolinc(来了)回复于 2005-06-01 15:03:26 得分 0

一定要用你的方式吗?  
  我的方法是:  
  100  
  --100100  
  ----100100100  
  ----100100101  
  --100101  
  ----100101100  
  101  
  --101100  
  3位一组,你需要什么,怎么截取,你就能知道它处在什么位置,总位数/3就是它的级别  
  也可以使用   like操作将其子节点都找到Top

2 楼huangguolinc(来了)回复于 2005-06-01 15:06:38 得分 0

在什么情况下,要从子去找父呢?一般的问题都能正向查找就能解决,如果一定要逆向的话,就截字符串吧Top

3 楼startray(孙悟空庄重宣布:从现在开始,国民进入抗日非常时期!(即不买卖日本的一切东西))回复于 2005-06-01 16:11:12 得分 0

写一个递归函数Top

4 楼jxdyzwh(http://www.szsoftware.com.cn)回复于 2005-06-01 16:18:12 得分 0

huangguolinc(来了)老兄,我要的就是这个东东,有没有程序,让我参考一下,Top

5 楼huangguolinc(来了)回复于 2005-06-02 09:49:51 得分 20

我的程序现在有业务在里面,你看起来会很吃力,很麻烦,我说说整个思路吧  
   
  classes表中有字段class,classname,classtype  
  class表示级别  
  classname表示级别名称  
  classtype表示级别类别,比如部门管理,信息管理  
   
  表中数据有  
  1000     部门管理     department  
  10001000   总公司    
  100010001000   哈尔滨分公司  
  100010001001   长春分公司  
  1000100010001000   销售部  
  1000100010001001   市场部  
  1001   信息管理     info  
  10011000   新闻中心  
  10011001   企业知识库  
  ...   ...  
   
   
  下面是级别管理的存储过程,你看看对你有没有帮助  
   
  ------------------------------------------------------------------------------------  
  -----目录级别管理  
  ------------------------------------------------------------------------------------  
  --目录树  
  if   exists   (select   name   from   sysobjects   where   name='ClassTree'   and   type='p')  
  drop   procedure   ClassTree  
  go  
   
  create   procedure   ClassTree  
  @ClassType   varchar(100)  
  with   encryption  
  as  
  select   *   from   classes   where   Class   like   (select   Class   from   classes   where   ClassType=@ClassType)+'%'   order   by   Class  
  go  
   
  --查看级别内容  
  if   exists   (select   name   from   sysobjects   where   name='ClassView'   and   type='p')  
  drop   procedure   ClassView  
  go  
   
  create   procedure   ClassView  
  @ClassID   int  
  with   encryption  
  as  
  select   *   from   classes   where   ClassID=@ClassID  
  go  
   
  --获取级别字符串,并新建级别  
  if   exists   (select   name   from   sysobjects   where   name='ClassNew'   and   type='p')  
  drop   procedure   ClassNew  
  go  
   
  create   procedure   ClassNew  
  @ClassID   int,  
  @ClassName   varchar(100)  
  with   encryption  
  as  
  declare   @Class   varchar(255),@rClass   varchar(255),@lClass   char(4),@Length   int  
   
  select   @Class=max(Class)   from   Classes   where   Class   like   (select   Class   from   Classes   where   ClassID=@ClassID)+'____'  
   
  if   (@Class   is   not   null)  
  begin  
  set   @Length=len(@Class)-3  
  set   @lClass=substring(@Class,@Length,4)  
  set   @rClass=substring(@Class,0,@length)  
  set   @lClass=@lClass+1  
  set   @Class=@rClass+@lClass  
  end  
  else  
  begin  
  select   @Class=Class   from   Classes   where   ClassID=@ClassID  
  set   @Class=@Class+'1000'  
  end  
  if(@Class   is   not   null)  
  begin  
  insert   into   Classes(Class,ClassName)   values(@Class,@ClassName)  
  end  
   
  select   @Class   as   Class  
  go  
   
  --修改级别名称  
  if   exists   (select   name   from   sysobjects   where   name='ClassUpdate'   and   type='p')  
  drop   procedure   ClassUpdate  
  go  
   
  create   procedure   ClassUpdate  
  @ClassID   int,  
  @ClassName   varchar(100)  
  with   encryption  
  as  
  update   classes   set   ClassName=@ClassName   where   ClassID=@ClassID  
  go  
   
  --删除级别  
  if   exists   (select   name   from   sysobjects   where   name='ClassDelete'   and   type='p')  
  drop   procedure   ClassDelete  
  go  
   
  create   procedure   ClassDelete  
  @ClassID   int  
  with   encryption  
  as  
  declare   @Class   varchar(255)--用于处理级别负责人  
  select   @Class=Class   from   Classes   where   ClassID=@ClassID  
  delete   from   Classes   where   len(Class)<>4   and   (ClassID=@ClassID   or   Class   like   @Class+'%')  
  go  
   
  --某类类别内容的选择  
  if   exists   (select   name   from   sysobjects   where   name='ClassSelectItem'   and   type='p')  
  drop   procedure   ClassSelectItem  
  go  
   
  create   procedure   ClassSelectItem  
  @ClassType   varchar(100)  
  with   encryption  
  as  
  select   *   from   classes   where   Class   like   (select   Class   from   classes   where   ClassType=@ClassType)+'____%'   order   by   Class  
  go  
   
  --级别名称  
  if   exists   (select   name   from   sysobjects   where   name='ClassName'   and   type='p')  
  drop   procedure   ClassName  
  go  
   
  create   procedure   ClassName  
  @ClassID   varchar(255)  
  with   encryption  
  as  
  select   *   from   classes   where   class=@ClassID  
  goTop

相关问题

  • 求一算法??急??
  • 急,求一算法
  • 寻求一算法!(急!急!!)
  • 急写一个算法
  • 急需一个算法
  • 百分求一算法!!!!急
  • 求一个算法!急
  • 急!!!求一个算法
  • 急求一个算法
  • 急求算法

关键词

  • 节点
  • 算法
  • 管理
  • classtype
  • 级别
  • classname
  • sysobjects
  • classid
  • procedure
  • drop

得分解答快速导航

  • 帖主:jxdyzwh
  • huangguolinc

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo