首页 新闻 会员 周边

求帮助写个递归。

0
[已关闭问题]

因为很少接触递归。先有个问题。感觉好像可以使用递归来实现。希望高手帮吗写个。asp.net 的

表结构

 

ClassID ParentID ClassName
1 0 新闻中心
2 0 会员中心
3 1 动态新闻
4 3 公司动态

 

现在的要求是。我需要获取栏目结构。比如我当前金融的是动态新闻。那么我的栏目导航就是

新闻中心》动态新闻

如果我进入的是公司动态那么我要得到的栏目结构就是

新闻中心》动态新闻》公司动态

 

请问这样的话用递归是否好实现。如果好的话。请帮我写个代码。谢谢。、

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2010-07-30 23:25
< >
分享
其他回答(3)
0

可以直接在SQL里面递归,sql2005的话可以直接用with。

 

http://www.cnblogs.com/heaiping/archive/2010/07/14/1777501.html

小AI | 园豆:354 (菜鸟二级) | 2010-07-30 23:38
0

var arr=[];

var current_obj=.....;

while(current_obj.ParentId!=root_id)

{

  arr[arr.length]=current_obj.ClassName;

  current_obj=dao.GetParentByParentId(current_obj.ParentId);

}

constructNavigatorInfo(arr);

镜涛 | 园豆:575 (小虾三级) | 2010-07-31 07:40
0

可以用SQL CTE写好,抓出值,直接赋值给treeview

changbluesky | 园豆:854 (小虾三级) | 2010-07-31 10:54
0

---- SQL Server 2005 or Higher
with menu (classid,parentid,classname) as (
select 1 , 0 , cast('新闻中心' as varchar) union all
select 2 , 0 , '会员中心' union all
select 3 , 1 , '动态新闻' union all
select 4 , 3 , '公司动态'
),
cte
as (
select classid,parentid,classname
from menu
where parentid=0
union all
select m.classid,m.parentid,cast( c.classname+'>>'+m.classname as varchar)
from menu m ,cte c
where c.classid=m.parentid
)
select classid,classname as classpath from cte
-- where classid=@classid


classid classpath
----------- ------------------------------
1 新闻中心
2 会员中心
3 新闻中心>>动态新闻
4 新闻中心>>动态新闻>>公司动态

 

killkill | 园豆:1192 (小虾三级) | 2010-07-31 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册