Foxtable(狐表)用户栏目专家坐堂 → [求助]求助目录树授权问题


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

主题:[求助]求助目录树授权问题

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
[求助]求助目录树授权问题  发帖心情 Post By:2018/8/31 0:36:00 [显示全部帖子]

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

左边用户,右边是导航栏,怎么才能将用户加入到授权表里对应的位置

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)参考?http://www.foxtable....  发帖心情 Post By:2018/8/31 14:31:00 [显示全部帖子]

感觉不一样,用select筛选出来符合条件的所有行后,怎么才能判断这些行里面有没有包含指定的文字(暂解决,帖子发出后不能撤销,比较麻烦)
[此贴子已经被作者于2018/8/31 14:33:57编辑过]

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)1、请换成2楼的方式处理。 ...  发帖心情 Post By:2018/8/31 15:23:00 [显示全部帖子]

现在能够选择第一个节点,第二个节点显示不正确,应该怎么改
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim mc As String = "& e.Node.Name &"
Dim drs As List(Of DataRow) = DataTables("用户_授权").Select("用户 like '*"& e.Node.Name &"*'")

For Each nd As WinForm.TreeNode In trv2.AllNodes
    nd.Checked = False
Next

For Each dr As DataRow In DataTables("用户_授权").Select("用户 like '*"& e.Node.Name &"*'")
    For Each nd1 As WinForm.TreeNode In trv2.Nodes
        nd1.Checked = dr("父节点").Contains(nd1.Name) And dr.IsNull("子节点")
        For Each nd2 As WinForm.TreeNode In trv2.Nodes(nd1.Name).Nodes
            nd2.Checked = dr("子节点").Contains(nd2.Name)
        Next
    Next
Next


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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)请参考,照抄里面的例子?ht...  发帖心情 Post By:2018/9/1 12:11:00 [显示全部帖子]

弄了一两天还是没有弄出来,麻烦看看需要怎么改,现在一选择用户后,用户单元格就会出现所有用户

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd1 As WinForm.TreeNode = trv1.SelectedNode
Dim nd2 As WinForm.TreeNode = trv2.SelectedNode
Dim dr As DataRow
Dim sl As Integer

If nd2.Level = 0 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.Name &"'")
ElseIf nd2.Level = 1 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.ParentNode.Name &"' and 子节点 = '"& e.Node.Name &"'")
End If

If dr IsNot Nothing Then
    Dim nms As String
    If e.Node.Level = 0 Then
        For Each yh1 As WinForm.TreeNode In trv1.Nodes
            If nd2.Checked = True
                nms  = nms & "," & yh1.Name
            End If
            If nms > "" Then
                dr("用户") = nms.Trim(",")
            Else
                dr("用户") = Nothing
            End If
        Next
    ElseIf e.Node.Level = 1 Then
        For Each yh1 As WinForm.TreeNode In trv1.Nodes
            If nd2.Checked = True
                nms  = nms & "," & yh1.Name
            End If
            If nms > "" Then
                dr("用户") = nms.Trim(",")
            Else
                dr("用户") = Nothing
            End If
        Next
    End If
End If
[此贴子已经被作者于2018/9/1 12:12:00编辑过]

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点蓝)Dim trv1 As WinForm.TreeView = e.F...  发帖心情 Post By:2018/9/2 16:53:00 [显示全部帖子]

我选择目录树第一层节点的最后一个节点,为什么增加,删除用户名的却是这个节点的下一个层级的节点最后一个

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd1 As WinForm.TreeNode = trv1.SelectedNode
Dim nd2 As WinForm.TreeNode = trv2.SelectedNode
Dim dr As DataRow
Dim sl As Integer

If nd2.Level = 0 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.Name &"'")
ElseIf nd2.Level = 1 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.ParentNode.Name &"' and 子节点 = '"& e.Node.Name &"'")
End If

If nd2.Level = 0 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.Name &"'")
ElseIf nd2.Level = 1 Then
    dr = DataTables("用户_授权").Find("父节点 = '"& e.Node.ParentNode.Name &"' and 子节点 = '"& e.Node.Name &"'")
End If
If dr IsNot Nothing Then
    If e.Node.IsSelected = True
        If dr("用户").contains(nd1.Text) = False
            If  dr.IsNull("用户")
                dr("用户") = nd1.Text
            Else
                dr("用户") = dr("用户")  & "," & nd1.Text
            End If
        End If
    End If
    If e.Node.Checked = False
        Dim ss() As String  = dr("用户").split(",")
        Dim lst As new List(of String)
        lst.AddRange(ss)
        lst.remove(nd1.Text)
        dr("用户") = String.Join(",",lst.ToArray())
    End If
End If

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)你用这个例子测试有没有问题?&nbs...  发帖心情 Post By:2018/9/2 22:13:00 [显示全部帖子]

我感觉我这个和他的看起来一样,但是还是不一样,我测试点击的节点所在层级数是正常的,就是对应的行是错的,但是别的目录树节点又是正常,只有这个不正常
想重新做个示例,但是做出来问题又不出现了,变得正常了
[此贴子已经被作者于2018/9/2 22:36:23编辑过]

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2018/9/2 22:13...  发帖心情 Post By:2018/9/2 23:23:00 [显示全部帖子]

打开表的时候根据其中一个表里面的数据生成导航栏的目录树节点,再将目录树节点的名称写入授权表里面对应的行里,在获取导航栏节点的时候用的是name来获取,去重的时候将原来的sqlfind改为find,获取名称的时候将name改为text,就没有错误了,不知道是什么原因

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2018/9/2 23:23...  发帖心情 Post By:2018/9/3 11:50:00 [显示全部帖子]

本来有个问题的,已解决
[此贴子已经被作者于2018/9/3 12:03:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2018/9/2 23:23...  发帖心情 Post By:2018/9/3 15:43:00 [显示全部帖子]

遇到一个问题,下面这个标色的代码有问题,提示:未设置对象变量或 With 块变量。
但是如果将dr1("父节点")dr1("子节点")换成文字测试就没有问题
    Dim dh As WinForm.TopicBar = Forms("导航栏").Controls("TopicBar1")
    For Each dr1 As DataRow In DataTables("用户_授权").Select("用户 not Like '*"& _username &"*' and 子
        dh.Pages(dr1("父节点")).Links(dr1("子节点")).Visible = False
    Next

 回到顶部