我想做一个树结构,通过数据库生成内容。
如:表A
ID PID Name
1 0 a
2 1 a1
3 1 a2
4 0 b
5 4 b1
6 0 c
ID为自加,PID为父ID
结果为:
a---a1
---a2
b---b1
c
请问用treeview控件怎样实现?
如:表A
ID PID Name
1 0 a
2 1 a1
3 1 a2
4 0 b
5 4 b1
6 0 c
ID为自加,PID为父ID
结果为:
a---a1
---a2
b---b1
c
请问用treeview控件怎样实现?
依次读记录,如PID为0 ,则建第一级节点并在节点的data属性记录下ID
如PID不为0,在已建好的节点中找到data属性(ID)等于现在PID的节点,在该节点下建立子节点,同样,要用data属性记录下......
数据读完,树也就见好了
var
Node_Root ,
Node_Parent :TTreeNode;
str_SQL ,
Str_Parent: String;
begin
{清除掉TREEVIEW中的所有结点}
BOMTreeView.Items.Clear;
{生成TREEVIEW的根结点}
Node_Root := BOMTreeView.Items.AddChild(NIL,'*'+DataModule1.CompanyName+'物料清单');
Node_Parent := Node_Root;
Str_SQL := 'Select THISID || '+ '''--''' + ' || THISNAME || '+'''##'''+' || BILLNO as fieldcurrent,';
Str_SQL := Str_SQL +' THISID as fieldparent ' ;
Str_SQL := Str_SQL + 'from SC_BOMTABLE where ACCOUNTID = '''+ DataModule1.ZhangTao + ''''; Str_Parent := 'PARENTID=' + '''*''';
{遍历数据表,根据表内容生成TREEVIEW的内容}
Addtreenode(DataModule1.ADOConnection1,BOMTreeView,Node_Parent,Str_SQL,Str_Parent);
BOMTreeView.Select(Node_Root);
end;
还有一种办法是,是用散列表,
我在java与perl中用到的,可惜delphi没有