急问:VC++(MFC)里怎样用树控件显示数据表数据,共三级。控件是TreeView 100

各位前辈,我现在做的项目有一个这样的问题,就是要用树控件来选择校区、专业、班级,并将选择的项(包括父项)逐一列出来比如:A校区的专业有计算机专业、模具专业,计算机专业有1... 各位前辈,我现在做的项目有一个这样的问题,就是要用树控件来选择校区、专业、班级,并将选择的项(包括父项)逐一列出来
比如:A校区的专业有计算机专业、模具专业,计算机专业有1501班、1502班,B校区的专业有会计专业、电子商务专业,会计专业有1503班、1504班
现在就是有这个数据库,不知道怎样设置树控件的项和子项,请前辈告诉我代码,SQL语句请用ADO操作方式
下面是3张表(篇幅原因,每表只列出几条),分别是校区表、专业表、班级表

校区表:(表名TB_JCU)
id jcuID jcu
1 11 A
2 21 B
3 31 C

专业表:(表名TB_Profession)
id professionID profession father
1 1101 计算机 11
2 2101 模具 21
3 3101 会计 31
4 4101 电商 41

班级表:(表名TB_Class)
id classID class father
1 1501 1501 1101
2 1502 1502 1101
3 1503 1503 3101
4 1504 1504 3101

怎样将其对应到树控件的三级,十分感谢!
展开
 我来答
bd_zwj
2015-05-21 · TA获得超过161个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:239万
展开全部
可以利用C++ map 对象保存一个ID和HTREEITEM 的映射,伪代码如下

#include <map>
using namespace std;

声明一个保存映射的全局或局部map 成员。

map<int, HTREEITEM> _maps;

添加列表伪代码
_RecordsetPtr rs ;
rs.CreateInstance() ....;

rs->Open(....)// 读取TB_JCU

循环变量recordset 对象,并插入树形列表

rs->MoveFirst();
while(!rs->EOF) {
int id = rs->Fileds->GetItem("id").Value;
HTREEITEM hItem = tree.InsertItem(....) ; // 插入校区。

// 关键部分
_maps.insert(std::pair<int, HTREEITEM>(id, hItem));
rs->movenext();
}

下面插入第二张表
rs->open(....); 读取TB_Profession

遍历recordset
while(!rs->EOF)
{
取father, id 两个字段
int father = rs->Fields->GetItem["father"].value;
int id = rs->Fields->GetItem["id"].value;
取需要插入的father HTREEITEM

HTREEITEM hFather = _maps[fahter];
插入HTREEITEM ;
HTREEITEM hItem = tree.InsertItem(.....); // 设定父HTRRITEM 为 hFather;

// 然后将新添加的HTREEITEM 添加到map 对象

_maps[id] = hItem;
}

以类似的方式将第三章表插入到树形控件
追问
我将数据库发给您,您能帮我写一个示例吗,十分感谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式