Foxtable(狐表)用户栏目专家坐堂 → 请教,还是目录树授权问题


  共有9123人关注过本帖树形打印复制链接

主题:请教,还是目录树授权问题

帅哥哟,离线,有人找我吗?
红叶
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
请教,还是目录树授权问题  发帖心情 Post By:2012/2/28 22:03:00 [只看该作者]

帮助中的

    

3、设置窗口和控件的事件代码.

窗口的AfterLoad事件代码为:

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree(
"授权","分组|权限")
For
Each u As UserInfo In Users
If
u.Type = UserTypeEnum.User Then
If
trv2.Nodes.Contains(u.Group) = False Then
trv2.Nodes.Add(u.Group)

End
If
trv2.Nodes(u.Group).Nodes.Add(u.Name)

End
If
Next

Trv1.Nodes(
0
).Expand()
trv2.ExpandAll()

我想改为,由Users生成目录树

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限","","分组 DESC")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C '如果用外部数据源指定数据源名称
cmd.CommandText = "SELECT * From {Users}"  ‘Users表中有Group,Roles,Name列
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.Datarows
    If dr("Group") <> "管理员" Then
       If trv2.Nodes.Contains(dr("Group")) = False Then '判断是否存在指定名称的节点.
          trv2.Nodes.Add(dr("Group")) '增加节点.如果增加成功,则返回所增加的节点
       End If
       If trv2.Nodes(dr("Group")).Contains(dr("Roles")) = False Then '判断是否存在指定名称的节点
          trv2.Nodes(dr("Group")).Add(dr("Roles"))
       End If 
          trv2.Nodes(dr("Group")).Nodes(dr("Roles")).Nodes.Add(dr("Name"))

    End If      
Next
Trv1.Nodes(0).Expand() '展开节点
trv2.ExpandAll() '展开节点及其子节点

 

问题1,红色部分的排序不起作用?
trv1.BuildTree("授权","分组|权限","","分组 DESC")

问题2,红色部分的增加节点出错?

If trv2.Nodes(dr("Group")).Contains(dr("Roles")) = False Then '判断是否存在指定名称的节点
trv2.Nodes(dr("Group")).Add(dr("Roles"))
End If
trv2.Nodes(dr("Group")).Nodes(dr("Roles")).Nodes.Add(dr("Name"))

想达到的目的是,比如

 

仓储部

      仓储部经理

            张三

       仓储部职员

            李四

业务部

       业务部经理

            王二

       业务部职员

            王五

 

目录表和表的对应关系是

仓储部(对应Group)

      仓储部经理(对应Roles)

            张三(对应Name)

      仓储部职员(对应Roles)

            李四(对应Name)

业务部(对应Group)

      业务部经理(对应Roles)

            王二(对应Name)

      业务部职员(对应Roles)

            王五(对应Name)


 

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/29 7:49:00 [只看该作者]

1、直接:

 

trv1.BuildTree("授权","分组|权限")

 

2、得看具体错误提示。

 

 

这种问题,做好新建一个项目,包括你的用户表和这个目录树窗口,设置好代码发上来,然后说明问题。


 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2012/2/29 9:36:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.foxdb

想达到右边的目录树如下,且把总经理排在最前面

总经理

      公司总经理

            赵四

仓储部

      仓储部经理

            张三

       仓储部职员

            李四

业务部

       业务部经理

            王二

       业务部职员

            王五

 

目录表和表的对应关系是

总经理(对应Group)

      公司总经理(对应Roles)

            赵四(对应Name)

仓储部(对应Group)

      仓储部经理(对应Roles)

            张三(对应Name)

      仓储部职员(对应Roles)

            李四(对应Name)

业务部(对应Group)

      业务部经理(对应Roles)

            王二(对应Name)

      业务部职员(对应Roles)

            王五(对应Name)

我窗口AfterLoad的事件代码是

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
'trv1.BuildTree("授权","分组|权限","","分组 DESC")
Dim dt As DataTable = DataTables("Users")
For Each dr As DataRow In dt.Datarows
    If dr("Group") <> "管理员" Then
       If trv2.Nodes.Contains(dr("Group")) = False Then '判断是否存在指定名称的节点.
          trv2.Nodes.Add(dr("Group")) '增加节点.如果增加成功,则返回所增加的节点
       Else If trv2.Nodes.Contains(dr("Roles")) = False Then '判断是否存在指定名称的节点.
          trv2.Nodes.Add(dr("Roles")) '增加节点.如果增加成功,则返回所增加的节点
       End If
       trv2.Nodes(dr("Group")).Nodes(dr("Roles")).Nodes.Add(dr("Name"))

    End If      
Next
Trv1.Nodes(0).Expand() '展开节点
trv2.ExpandAll() '展开节点及其子节点

问题:

1,打开窗口出错

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120229093403.jpg
图片点击可在新窗口打开查看
2,打开窗口后并达到要求的目录树

 


 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2012/2/29 9:56:00 [只看该作者]

请狐爸及同人们帮改一下代码

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/29 10:20:00 [只看该作者]

这样就行:

 

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
trv2.BuildTree("Users","Group|Roles|Name")


 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2012/2/29 11:03:00 [只看该作者]

这样是可以生成目录树,但是

1,Group中有个自定义的“管理员”,希望不增加到目录中

2,怎样对Group中的进行排序,我想把“总经理”这个排在最前面

 

另外,如果“授权”表的行数为0,或行数不为0时,但分组全为空时,窗口打开出错

应该在打开窗口前加一个判断吧,代码怎么写呢


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/29 11:47:00 [只看该作者]

不要管理员的:

 

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
trv2.BuildTree("Users","Group|Roles|Name","[Group] <> '管理员'")

 

没有办法经理排在前面。


 回到顶部