在sqlsever中建一个表,之后要用treeview自动根据表中的结构显示树状的结构,应该怎么做?

「已注销」 2005-09-21 11:15:35
rt
...全文
198 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2005-09-21
  • 打赏
  • 举报
回复
那用treeview怎么访问数据库呢?在数据库中导出数据的话比较麻烦
wf2091139 2005-09-21
  • 打赏
  • 举报
回复
treeview 不能连接数据库,所以写节点的用循环语句,一个一个写

你的数据表最好要有2个这样的字段,1、 序号,2、级别
使得当你按序号排序之后,这个数据表看上不就大概有一个树的特征了,
然后在一条一条的读记录写节点就可以了.


下面是一个根据表生成树的过程(树的层次不限)。

TTreeNode *ChildNode = new TTreeNode(tv->Items); //临时节点
TTreeNode *ParentNode = new TTreeNode(tv->Items); //临时节点

qry ------>select * from ... order by ID
int Class;
while(!qry->Eof)
{

Class = qry->FieldByName("级别")->AsInteger;
AnsiString Caption = qry->FieldByName("Name")->AsString;
if(Class == 0)
{
ParentNode = tv->Items->AddChild(NULL,Caption);

}
else
{
while(Class-1 < ParentNode->Level )
{
ParentNode = ParentNode->Parent;
}
ChildNode = tv->Items->AddChild(ParentNode,Caption);
ParentNode = ChildNode;
}
qry->Next();
}
sxzqlzx 2005-09-21
  • 打赏
  • 举报
回复
搜索一下吧,不难的,数据库toTreeview
「已注销」 2005-09-21
  • 打赏
  • 举报
回复
谢谢各位了
wf2091139 2005-09-21
  • 打赏
  • 举报
回复
xiaomatian(趴趴熊◎%#……※×)

我觉的还是不要 递归调用 的方法。
每次调用都要查询一次数据库,
如果你的数据是在本地(像单机版),
那到没什么影响,如果是远程服务器,
那速度就不行了
xiaomatian 2005-09-21
  • 打赏
  • 举报
回复
这个问题很简单的.这是我用的一段代码,你看一下,
void TForm10::AddClass(int AId,TTreeNode *FatherNode)
{
TADOQuery *QryTmp;
TTreeNode *myNode;
TLabel *myLabel;
CheckCon();
QryTmp=new TADOQuery(this);
QryTmp->Connection=this->ADOConnection1;
QryTmp->Close();
QryTmp->SQL->Clear();
QryTmp->SQL->Add("select * from bjinfo");
QryTmp->SQL->Add("where fatherid="+IntToStr(AId));
QryTmp->Open();
while(!QryTmp->Eof)
{
myNode=TreeView1->Items->AddChild(FatherNode,QryTmp->FieldByName("bjmc")->AsString);

myLabel=new TLabel(this);
myLabel->Visible=false;
myLabel->Caption=QryTmp->FieldByName("bjbh")->AsString;
myNode->Data=myLabel;
AddClass(QryTmp->FieldByName("bjbh")->AsInteger,myNode); //递归调用过程
QryTmp->Next();
}
delete QryTmp;

}
你可以在窗体加载或者第一次加载这个树的时候这样调用
AddClass(0,NULL);

Node的data记录一个label,用label的caption来存接点数据!
wf2091139 2005-09-21
  • 打赏
  • 举报
回复
你是想像DBGrid 那样直接出来?不过可惜treeview 没有这种功能。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧