Foxtable(狐表)用户栏目专家坐堂 → 如何移除目录下满足条件的节点


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

主题:如何移除目录下满足条件的节点

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
如何移除目录下满足条件的节点  发帖心情 Post By:2012/8/31 18:16:00 [只看该作者]

各位老师,

 

在导航的目录树中设计了以下功能,如下图


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120831180104.jpg
图片点击可在新窗口打开查看
 

双击父节点展开前,判断当前登录用户的部门及角色以及目录树节点的表名有没有在授权表中,如果没有则移除该节点,代码如下,

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode

If _UserName <> "开发者" Then
    For Each nd1 As WinForm.TreeNode In nd.Nodes
        Dim dr As DataRow
        dr = DataTables("授权表").Find("部门 = '" & _UserGroup & "' And 角色 In ('" & _UserRole & "') and 表名 = '" & nd1.Text & "'")
        If dr IsNot Nothing Then
        Else
            nd.Nodes.Remove( nd.Nodes("nd1"))
        End If
    Next
End If

 

但运行后出错如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120831180241.jpg
图片点击可在新窗口打开查看

 

不知哪里有错,请老师指点

 

谢谢!


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/31 18:23:00 [只看该作者]

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode

If _UserName <> "开发者" Then
    For Each nd1 As WinForm.TreeNode In nd.Nodes
        Dim dr As DataRow
        dr = DataTables("授权表").Find("部门 = '" & _UserGroup & "' And 角色 In ('" & _UserRole & "') and 表名 = '" & nd1.Text & "'")
        If dr IsNot Nothing Then
            nd.Nodes.Remove( nd.Nodes("nd1"))
        End If
    Next
End If


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/8/31 18:25:00 [只看该作者]

谢谢CZY,我把

nd.Nodes.Remove( nd.Nodes("nd1"))

改为 nd.Nodes.Remove(nd1)

 

就可以了。



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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/31 18:28:00 [只看该作者]

二楼理解有误,好像应该这样吧

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode

If _UserName <> "开发者" Then
    For Each nd1 As WinForm.TreeNode In nd.Nodes
        Dim dr As DataRow
        dr = DataTables("授权表").Find("部门 = '" & _UserGroup & "' And 角色 In ('" & _UserRole & "') and 表名 = '" & nd1.Text & "'")
        If dr Is Nothing Then
            nd.Nodes.Remove(nd1)
        End If
    Next
End If

[此贴子已经被作者于2012-8-31 18:28:45编辑过]

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/8/31 18:30:00 [只看该作者]

老师可能误会了,这句代码

 

If dr IsNot Nothing Then
        Else
            nd.Nodes.Remove( nd.Nodes("nd1"))
        End If


我的意思是如果找到则什么都不做,

 

找不到即else才移除节点

 

请问老师这种条件语句是不是有错?


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/31 18:32:00 [只看该作者]

应该这样

If dr Is Nothing Then


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/8/31 19:38:00 [只看该作者]

谢谢CZY老师,理解了,但奇怪的是我那样写运行也没有出错,不知道为什么?

 

再次感谢


 回到顶部