如何提取treeview子节点内容及其父节点的内容?(30分)

  • 主题发起人 主题发起人 shkevin
  • 开始时间 开始时间
S

shkevin

Unregistered / Unconfirmed
GUEST, unregistred user!
sql查询语句,条件为treeview父节点和其下一个子节点,这个语句该怎么写?
(treeview共有两个父节点,其下各有若干子节点,因两个父节点下对应的子节点是一样的,所以需要判断选中的子节点属于哪个父节点。)
 
数据结构都没描述清楚,怎么实现算法。
 
treeview结构示意如下:
(父节点1):收货
(子节点11):黄豆
(子节点12):蚕豆
(子节点13):绿豆
(父节点2):收货
(子节点21):黄豆
(子节点22):蚕豆
(子节点23):绿豆
比如,我想选中第一个父节点中的“黄豆”子节点,在dbgrid中显示一字段属性为“收货”并且另一字段属性为“黄豆”的所有记录。
 
if Assigned(TreeView1.selected) //当前选择的节点
if Assigned(TreeView1.Selected.Parent) //父节点
 
用sql实现递归
推荐MS SQL Server中
tb_city表结构如下
id name parentid
1 湖北 0
2 湖南 0
3 武汉 1
4 仙桃 1
5 长沙 2
6 蔡甸 3
定义函数
create function c_tree(@initid int)/*定义函数c_tree,输入参数为初始节点id*/
returns @t table(id int,name varchar(100),parentid int,lev int)/*定义表t用来存放取出的数据*/
begin

declare @i int/*标志递归级别*/
set @i=1
insert @t select id,name,parentid,@i from tb_city where id=@initid
while @@rowcount<>0
begin
set @i=@i+1
insert @t select a.id,a.name,a.parentid,@i from tb_city as a,@t as b
where b.id=a.parentid and b.lev=@i-1
end
return
end
执行
使用函数
select * from c_tree(1) /*取湖北下面的子节点*/
Oracle中的实现
select * from TB_CITY
/*此处可写WHERE语句限制*/
start with ID=1
connect by prior ID=PARENTID
 
呵,剛剛找到的資料,與樓主分享一下!
歡迎討論。
 

Similar threads

D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
后退
顶部