从数据库 读出Treeview的问题 请教
要读出的Treeview大概是
A
A1
A2
A3
A4
A5
AA
AA1
AA2
AA3
AA4
AB
AB1
AB2
AB3
AB4
AC
AC1
AC2
B
B1
B2
B3
B4
B5
B6
C
C1
C2
C3
C4
C5
C6
CA
CA1
CA2
CB
CB1
我想用深度优先遍历 一个一个往这个树上加
可是 我想以A1 A2 A3 AA1这样排序 可是不行
请教大家还有什么方法
谢谢
分不多 真心请教
------解决方案-------------------- 邹大侠的
--测试数据
create table tb(
id int identity(1,1) not null constraint PK_tb primary key clustered,
pid int,name varchar(20))
insert tb select 0, '中国 '
union all select 0, '美国 '
union all select 0, '加拿大 '
union all select 1, '北京 '
union all select 1, '上海 '
union all select 1, '江苏 '
union all select 6, '苏州 '
union all select 7, '常熟 '
union all select 6, '南京 '
union all select 6, '无锡 '
union all select 2, '纽约 '
union all select 2, '旧金山 '
go
--1.自定义函数--获取编码累计
create function f_getmergid(@id int)
returns varchar(8000)
as
begin
declare @re varchar(8000),@pid int
--为了数字排序正常,需要统一编码宽度
declare @idlen int,@idheader varchar(20)
select @idlen=max(len(id))
,@idheader=space(@idlen)
from tb
--得到编码累计
set @re=right(@idheader+cast(@id as varchar),@idlen)
select @pid=pid from tb where id=@id
while @@rowcount> 0
select @re=right(@idheader+cast(@pid as varchar),@idlen)+ ', '+@re
,@pid=pid from tb where id=@pid
return(@re)
end
go
select * from tb order by dbo.f_getmergid(id)
go