动态生成树结合DBgird显示记录
现有Ta,Tb,Tc三个表,三个DBGird,一个TreeView,
1.DBGird_A使用Ta,根据DBGird_A里的列生成TreeView的根节点,
2.DBGird_B使用Tb,根据DBGird_B里的列递归生成TreeView的同级子节点。这两个问题已经解决。
3.DBGird_C使用Ta,Tb,Tc,能在展开TreeView的同时显示所有组合查询的情况下显示所有记录,
现在的关键问题是,如何在点击TreeView各子节点的时候,生成相应的DBGird_C行,
比如:点击了TreeView的子节点“房费”,生成查询到的消费类别=房费的相应记录,
点击了TreeView的子节点“餐费”,生成查询到的消费类别=餐费的相应记录!
谁能给给个代码示例啊!
[解决办法]
大致代码,思路是这样的,未做编译
procedure TMainForm.Treeview1Expanded(Sender: TObject; Node: TTreeNode);
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.text := 'select * from table1 where name='+node.text;
for i := 0 to adoquery1.count-1 do
begin
Treeview1.items.addchild(Node,adoquery1.count[i].astring);
end;
end;
[解决办法]
步骤:
1.限度去第一级的记录,然后逐条添加到treeview中,并且为每个node的data属性保存每条记录的id
2.数据集select所有非顶级的记录,然后循环数据集,根据每条记录的上级id,去treevie上循环节点找节点的data值符合条件的node,然后添加childnode,依次类推
[解决办法]