首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

如何用treeview控件显示数据库里的资料

2012-03-14 
求助:怎么用treeview控件显示数据库里的资料?我现在有一个类别表m_kind,这个表的资料如下:字段 m_kind数据

求助:怎么用treeview控件显示数据库里的资料?
我现在有一个类别表m_kind,这个表的资料如下:
字段 m_kind
数据 A
  B
  C
然后还有一个子表c_kind
m_kind表中的每一类又分为几小类,存在c_kind中,资料如下:(实际情况可能是在c_kind下面还有更小的分类)
字段 m_kind c_kind
  A a
  A b
  A c
  B a
  B e
  C m
  C w
我想用TREEVIEW控件显示如下:
A
  a
  b
  c
B
  a
  e
C
  m
  w
请问这样怎么做,
哪位可以发个例子给我吗?谢谢。

[解决办法]
string m1,m2,m3,m4,m5,m6,object_name
long n,i,k
int l1,l2,l3,l4,l5,l6,m
//
//datastore dt_area
//dt_area=create datastore
//dt_area.dataobject="d_area"
//
//
treeviewitem item_area,item_area2
long newitem1,newitem2,newitem3,newitem4,newitem5,new,item6
//long rootitem

dw_2.settransobject(sqlca)
m=dw_2.retrieve()


item_area.label=object_name
item_area.data="0"
item_area.pictureindex=1
item_area.SelectedPictureIndex=4
item_area.children=true
tv_1.insertitemlast(0,item_area)

for l1=1 to m
m1=dw_2.object.data[l1,1]
//st_2.text=m1
if dw_2.object.data[l1,3]="0" and dw_2.object.data[l1,4]=1 then
item_area.label=dw_2.object.data[l1,2]
item_area.data=dw_2.object.data[l1,1]
item_area.pictureindex=1
item_area.SelectedPictureIndex=4
item_area.children=true
newitem1=tv_1.insertitemlast(1,item_area)
//end if
for l2=1 to m
m2=dw_2.object.data[l2,1]
if dw_2.object.data[l2,3]=m1 and dw_2.object.data[l2,4]=1 then

item_area.label=dw_2.object.data[l2,2]
item_area.data=dw_2.object.data[l2,1]
item_area.pictureindex=1
item_area.SelectedPictureIndex=4
//if dw_2.object.data[i,5]<>"" then 
//item_area.children=false 
//item_area.pictureindex=2
//
// end if
newitem2=tv_1.insertitemlast(newitem1,item_area)
for l3=1 to m
m3=dw_2.object.data[l3,1]
if dw_2.object.data[l3,3]=m2 and dw_2.object.data[l3,4]=1 then

item_area.data=dw_2.object.data[l3,1]
item_area.label=dw_2.object.data[l3,2]
item_area.pictureindex=1
item_area.SelectedPictureIndex=4
item_area.children=true
newitem3=tv_1.insertitemlast(newitem2,item_area)
for l4=1 to m
m4=dw_2.object.data[l4,1]
if dw_2.object.data[l4,3]=m3 and dw_2.object.data[l4,4]=1 then

item_area.data=dw_2.object.data[l4,1]
item_area.label=dw_2.object.data[l4,2]
item_area.pictureindex=2
item_area.SelectedPictureIndex=4
item_area.children=true
newitem4=tv_1.insertitemlast(newitem3,item_area)
for l5=1 to m
m5=dw_2.object.data[l5,1]
if dw_2.object.data[l5,3]=m4 and dw_2.object.data[l5,4]=1 then

item_area.data=dw_2.object.data[l5,1]
item_area.label=dw_2.object.data[l5,2]
item_area.pictureindex=2
item_area.SelectedPictureIndex=4
item_area.children=false
newitem5=tv_1.insertitemlast(newitem4,item_area)
end if
next
end if
next
end if
next

end if
next
end if
next
这是一个7层的
------解决方案--------------------


递归生成树的函数:

C# code
//====================================================================// 函数: f_tree_init//--------------------------------// 描述: 在树控件根据数据库表递归生成树视图//--------------------------------// 参数:// treeview atv_i         控件名,如TV_1// string as_table        表名// string as_keycolumn    节点代码// string as_valuecolumn  内容// string as_upkeycolumn  表中存放上级的字段名// string as_upkeyvalue   上级代码// long    al_roothandle  传0即可//--------------------------------// 返回值: integer//--------------------------------//  //--------------------------------// 修改历史: // //====================================================================treeviewitem ltvi_iString ls_sql,ls_syntax,ls_errorString ls_key,ls_valueLong ll_handleLong idatastore lds_i lds_i = CREATE datastore//根据传入的参数,拼检索的SQL语句ls_sql = "select "+as_keycolumn+","+as_valuecolumn+" from "+as_table+" where "+as_upkeycolumn+"='"+as_upkeyvalue+"'" + " order by " + as_keycolumn ls_syntax = sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)//动态执行上述SQL,结果存放在lds_i中IF Len(ls_error) > 0 THENRETURN 0ELSEls_error = ''//上级单位代码为:as_upkeyvalue的结果集lds_i.Create(ls_syntax,ls_error)IF Len(ls_error) > 0 THEN   RETURN 0END IFlds_i.SetTransObject(sqlca)lds_i.Retrieve()END IF//遍历上述结果集,插入到TV控件中FOR i = 1 TO lds_i.RowCount( )ls_key = lds_i.GetItemString( i,as_keycolumn)ls_value = lds_i.GetItemString( i,as_valuecolumn) //从结果集中取值ltvi_i.Data = ls_keyltvi_i.Label = ls_valueltvi_i.PictureIndex = 1 //初始节点图片ltvi_i.SelectedPictureIndex = 2 //选中时的节点图片ll_handle = atv_i.InsertItemLast(al_roothandle,ltvi_i) //插到控件里//以本条的节点代码作为上级代码,递归查找下级,直到本次节点的所有下级全部检索完成并插入到TV中,进行下一次循环。f_tree_init(atv_i,as_table,as_keycolumn,as_valuecolumn,as_upkeycolumn,ls_key,ll_handle)NEXTRETURN 0 

热点排行