wlj78 发表于 2011-10-27 20:23:53

treeview的问题

把权限列表的数据按一定规律组合后显示到treeview中没问题,但如何根据treeview中checked属性或其它方法保存到数据库中。
不要例程,只需要思路和核心代码。谢谢了!

wlj78 发表于 2011-10-28 22:26:22

哥,回一个

wlj78 发表于 2011-10-30 21:07:39

已解决了!

ehxz 发表于 2011-10-30 22:22:25

论坛人气太差了,要好好整整了。{:lh_25:}

wlj78 发表于 2011-10-31 20:43:05

一、生成treeview
C# code
this.setredraw( false)
nvo_datastore mydtx,mydtx2
nvo_loginqx myqx
datastore mydt,mydt2
long tvlever1,tvlever2

mydt = mydtx.f_getdatastore( "select menuname,menutext from menuright where len(menuname) = 3" )
mydt.settransobject(sqlca)
mydt.retrieve( )
int i,m
treeviewitem tvitem,tvitem2
for i = 1 to mydt.rowcount( )
    tvitem.label = mydt.getitemstring(i,"menutext")
    tvitem.data = mydt.getitemstring(i,"menuname")
    tvitem.statepictureindex = 2
    tvlever1 = this.insertitemlast( 0,tvitem)
   
    mydt2 = mydtx.f_getdatastore( "select menutext,menutag from menuright where len(menuname)>3 and left(menuname,3) ='"+ tvitem.data+"'")
    mydt2.settransobject(sqlca)
    mydt2.retrieve( )
    for m = 1 to mydt2.rowcount()
      tvitem2.label = mydt2.getitemstring(m,"menutext")
      tvitem2.data = mydt2.getitemstring(m,"menutag")
      tvitem2.statepictureindex = 1
      this.insertitemlast(tvlever1,tvitem2)      
    next
this.expandall( tvlever1)
next
mydtx.f_destroydatastore( )
mydtx2.f_destroydatastore( )

this.setredraw( true)


二、点击权限组时,选择相对应的权限
1、无清空权限
C# codetreeviewitem tvi
long ll_tvi,ll_tvi2
ll_tvi = this.FindItem(RootTreeItem!, 0)
do while ll_tvi >0
    ll_tvi2 = this.finditem(childtreeitem!,ll_tvi)
    do while ll_tvi2>0
      this.getitem(ll_tvi2,tvi)
             tvi.statepictureindex = 1
             this.setitem(ll_tvi2,tvi)
      ll_tvi2 = this.finditem(nexttreeitem!,ll_tvi2)
    loop
    ll_tvi = this.finditem(nexttreeitem!,ll_tvi)
loop


2、生成权限
C# code
nvo_loginqx myqx

rightcode = myqx.f_pub_transdata_to_code( rightcode)

treeviewitem tvi
long ll_tvi,ll_tvi2
ll_tvi = this.FindItem(RootTreeItem!, 0)
do while ll_tvi >0
    ll_tvi2 = this.finditem(childtreeitem!,ll_tvi)
    do while ll_tvi2>0
      this.getitem(ll_tvi2,tvi)
      if myqx.f_pub_checkqx( tvi.data,rightcode) then
             tvi.statepictureindex = 2
             this.setitem(ll_tvi2,tvi)
      end if
      ll_tvi2 = this.finditem(nexttreeitem!,ll_tvi2)
    loop
    ll_tvi = this.finditem(nexttreeitem!,ll_tvi)
loop


三、保存权限
C# code
nvo_loginqx myqx
string rightcode
rightcode = fill('0',80)
treeviewitem tvi
long ll_tvi,ll_tvi2
ll_tvi = this.FindItem(RootTreeItem!, 0)
do while ll_tvi >0
    ll_tvi2 = this.finditem(childtreeitem!,ll_tvi)
    do while ll_tvi2>0
      this.getitem(ll_tvi2,tvi)
      if tvi.statepictureindex = 2 thenrightcode = replace(rightcode,integer(tvi.data),1,'1')   
      ll_tvi2 = this.finditem(nexttreeitem!,ll_tvi2)
    loop
    ll_tvi = this.finditem(nexttreeitem!,ll_tvi)
loop
return myqx.f_pub_transdata_to_string( rightcode)

wlj78 发表于 2011-10-31 20:45:07

myqx.f_pub_transdata_to_code( rightcode)把数据库字符串权限转化成二进制权限
myqx.f_pub_transdata_to_string( rightcode)把二进制权限转化为数据库存储的字符串
myqx.f_pub_checkqx( tvi.data,rightcode)检查当前tag值在二进制权限的数位,为1则是true否则为false

wlj78 发表于 2011-10-31 20:45:41

权限设置的思想,权限码用二进制的0/1表示,其数位代表需要设置权限的控件tag值,再把二进制数四位一组存为字符0,1,2,3......进行存储压缩位数,我试了试效果不错,思路也挺好。

fuxiaoyang13 发表于 2011-11-1 12:51:33

学习!!!!

a78782295 发表于 2012-3-22 17:01:24

竟然是 C#的code

liqipeng182 发表于 2013-10-5 22:12:51

学习了!!!!
页: [1]
查看完整版本: treeview的问题

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com