我想把数据表中的数据加载到TreeView中,该如何做啊?

zbc 2004-10-24 12:27:18
关键是它的数据表该怎么样来设计?
加载的函数怎么来实现..
...全文
140 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ntahua 2004-10-25
  • 打赏
  • 举报
回复
数据表一般是这样,每一个节点都需要有一个字段是标明它的父节点
ntahua 2004-10-25
  • 打赏
  • 举报
回复
给个简单的例子,是转的别人的,借花献佛。。。。。
{
if(!ADODataSet1->Active){
ShowMessage("數據庫未能成功連接,請先連接數據庫...");
return;
}
if(isCreate){
ShowMessage("目錄樹已經生成,謝謝使用...");
return;
}
TTreeNode *tnd, *ParTnd;
while(!ADODataSet1->Eof){
//取得数据
int i_pid = ADODataSet1->FieldByName("ParentID")->AsInteger;
String strT = ADODataSet1->FieldByName("ClassName")->AsString;
//是否为根节点
if(!i_pid){
TreeView1->Items->Add(NULL,strT);
// tnd = TreeView1->Items->Item[index];
//否则 ,找其父结点,添加自己
}else{
//新建數據源,得出父節點的名稱。
TADODataSet * adoTmp = new TADODataSet(Form1/*这是表明動態控件adoTmp放置在Form1上,而不是在其他的象form2之類的上面*/);
adoTmp->Connection = ADODataSet1->Connection;
adoTmp->Active = false;
adoTmp->CommandText = "Select * From ClassInfo WHERE ClassID = "+IntToStr(i_pid);
adoTmp->Active = true;
String strPar = adoTmp->FieldByName("ClassName")->AsString;
//查找父節點,並保存些節點於ParTnd;
tnd = TreeView1->Items->GetFirstNode();
while(tnd){
if(tnd->Text == strPar)
ParTnd = tnd;
tnd = tnd->GetNext();
}
TreeView1->Items->AddChild(ParTnd,strT);
TreeView1->FullExpand();
//釋放內存申請空間
delete adoTmp;
}
ADODataSet1->Next();
}
ADODataSet1->First(); //移到最前,備下次使用
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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