Foxtable(狐表)用户栏目专家坐堂 → 权限设置报错“未引用实例对象”


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

主题:权限设置报错“未引用实例对象”

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 9:13:00 [显示全部帖子]

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("授权","模块|子模块")
trv.ExpandAll()
Dim dr As DataRow
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Level <> 0 Then '第一层节点没有ParentNode
        dr = DataTables("授权").Find("模块 = '" & nd.ParentNode.Name & "' And 子模块 = '" & nd.Name & "'")
        Dim Str As String = dr("职位")
        If Str > "" AndAlso Str.Contains("管理者") Then
            nd.Checked = True
        End If
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 10:09:00 [显示全部帖子]

看这里的用法:http://www.foxtable.com/webhelp/scr/2405.htm

看不懂就上传具体实例

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 10:59:00 [显示全部帖子]

If e.Node.ParentNode IsNot Nothing Then '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
    e.Node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In e.Node.AllNodes
    nd.Checked  = e.Node.Checked
Next
Dim st As String = e.Form.Controls("ComboBox1").Value
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd1 As WinForm.TreeNode = trv1.SelectedNode
Dim dr As DataRow
Dim Lst As new List(of String)
If nd1.Level = 0 Then
    For Each dr In DataTables("授权").Select("模块 = '" & nd1.Name & "'")
        Lst.Clear
        If dr.IsNull("职位")
            If nd1.Checked Then
                dr("职位") = st
            End If
        Else
            Lst.AddRange(dr("职位").split(","))
            If nd1.Checked Then
                If lst.Contains(st) = False Then lst.Add(st)
            Else
                If lst.Contains(st)  Then lst.Remove(st)
            End If
            dr("职位") = String.Join(",",lst.ToArray)
        End If
    Next
Else
    dr = DataTables("授权").Find("模块 = '" & nd1.ParentNode.Name & "' And 子模块 = '" & nd1.Name & "'")
    If dr IsNot Nothing Then
        Lst.Clear
        If dr.IsNull("职位")
            If nd1.Checked Then
                dr("职位") = st
            End If
        Else
            Lst.AddRange(dr("职位").split(","))
            If nd1.Checked Then
                If lst.Contains(st) = False Then lst.Add(st)
            Else
                If lst.Contains(st)  Then lst.Remove(st)
            End If
            dr("职位") = String.Join(",",lst.ToArray)
        End If
        
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 11:35:00 [显示全部帖子]

Dim dr2 As DataRow = DataTables("用户信息").find("用户名 = '" & 用户名 & "'")  '找到当前登录者所在的行
Dim zw As String = "," & dr2("职位") & ","
For Each dr1 As DataRow In DataTables("授权").Select("模块 <> 'PDA' and 子模块 is not null")
    If ("," & dr1("职位") & ",").contains(zw) = False
        RibbonTabs(dr1("模块")).Groups(dr1("分组名")).Items(dr1("子模块")).Visible = False
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 11:48:00 [显示全部帖子]

Visible

逻辑型,返回或者设置功能组是否可见。

示例:

Dim gp As RibbonMenu.Group
gp = RibbonTabs(
"Common").Groups("Data")

gp.Visible = 
False


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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 14:17:00 [显示全部帖子]

方法1,循环这个分组所有项目,如果全部都为隐藏状态,就同时把这个分组设置为远程
2、查询这个分组在数据表中是否有此用户的设置
3、增加一行记录,记录分组是否可见,类似这里表的设置:http://www.foxtable.com/webhelp/scr/1600.htm

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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 15:40:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 16:30:00 [显示全部帖子]

Dim itm As RibbonMenu.RibbonItem
Dim v As Boolean
For Each itm In RibbonTabs("某功能区").Groups("某功能组").Items
    
If itm.visible Then
      
v = true
     exit
    
End If
Next
RibbonTabs("某功能区").Groups("某功能组").visible = v


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


加好友 发短信
等级:超级版主 帖子:113535 积分:578176 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 18:06:00 [显示全部帖子]

Dim v As Boolean
Dim v1 As Boolean
For Each rt As RibbonMenu.Tab In RibbonTabs
    v1 = False
    For Each gp As RibbonMenu.Group In rt.Groups
        v = False
        For Each itm In gp.Items
            If itm.visible Then
                v = True
                Exit
            End If
        Next
        gp.visible = v
        If gp.Visible Then
            v1 = True
        End If
    Next
    rt.visible = v1
Next

 回到顶部