急问: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
怎样将其对应到树控件的三级,十分感谢! 展开
比如: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
怎样将其对应到树控件的三级,十分感谢! 展开
1个回答
展开全部
可以利用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;
}
以类似的方式将第三章表插入到树形控件
#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;
}
以类似的方式将第三章表插入到树形控件
追问
我将数据库发给您,您能帮我写一个示例吗,十分感谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询