以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  左导航权限问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148731)

--  作者:manyifuwu
--  发布时间:2020/4/14 12:44:00
--  左导航权限问题
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=122493
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.table


通过学习左导航,怎么添加权限呢。例如,行政分组:不能看见 工程管理部和 财务审计部。录入分组  不能看见:质量安全部


--  作者:有点蓝
--  发布时间:2020/4/14 13:50:00
--  
比如:

Dim zaj As List(of String)
If user.Group = "行政分组" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'工程管理部\',\'财务审计部\')","序号")
ElseIf  user.Group = "录入分组" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'质量安全部\')","序号")
Else
    zaj  = DataTables("导航").GetValues("分组","","序号")
End If


--  作者:manyifuwu
--  发布时间:2020/4/14 14:06:00
--  
请问,放在哪个位置呢?


--  作者:manyifuwu
--  发布时间:2020/4/14 14:16:00
--  
我放在:AfterOpenProject  和左导航:AfterLoad   都无效。
--  作者:有点蓝
--  发布时间:2020/4/14 15:00:00
--  
放到窗口afterload

替换原来的这一句
Dim zaj As List(of String) = DataTables("导航").GetValues("分组","","序号")

--  作者:manyifuwu
--  发布时间:2020/4/14 15:15:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table

老师:按照这样弄了,还是不行呢?

--  作者:有点蓝
--  发布时间:2020/4/14 16:16:00
--  
都说了替换掉原来的代码,单独放一段代码后面有啥用啊

Dim o As new C1.Win.C1Command.C1OutBar
o.name="o"
o.dock=5 \'锚定
o.VisualStyle=5 \'主题
o.pagetitleheight=30 \'页面高度
Dim zaj As List(of String)
If user.Group = "行政" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'工程管理部\',\'财务审计部\',\'质量安全部\')","序号")
ElseIf  user.Group = "录入" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'质量安全部\')","序号")
Else
    zaj  = DataTables("导航").GetValues("分组","","序号")
End If
For Each za As String In zaj
    Dim p1 As new C1.Win.C1Command.C1OutPage \'新建页面
    p1.name=za
    p1.text=za
    o.Pages.add(p1)
    Dim ajm As List(of DataRow) = DataTables("导航").Select("分组=\'" & za & "\'","序号 Desc")
    For Each aj2 As DataRow In ajm
        Dim aj As String = aj2("名称")
        Dim jpg As String = aj2("图标")
        Dim hsmc As String =aj2("名称")  \' "a" & aj2("分组") & aj & aj2("序号")
……

--  作者:manyifuwu
--  发布时间:2020/4/14 16:49:00
--  
谢谢!
主窗口:怎么改呢?
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'停止绘制
lvw.Groups.Clear() \'清除原来的分组
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Details \'显示模式为详细信息
lvw.TitleSize = New Size(130,80) \'设置平铺区域大小
lvw.GridLines  = True \'显示网格线
Dim cls() As String = {"名称"} \'定义列名
Dim wds() As Integer = {100} \'定义列宽
For i As Integer = 0 To  cls.Length - 1  \'增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) \'指定列名
    c.Text = cls(i) \'指定标题,这里标题和列名相同
    c.Width = wds(i) \'指定列宽
Next
\'lvw.Columns("人口").TextAlign = HorizontalAlignment.Right
\'lvw.Columns("面积").TextAlign = HorizontalAlignment.Right

For Each zh As String In DataTables("导航").GetValues("分组","","序号") \'增加分组
    Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
    grp.Name = zh
    grp.Text = zh
Next

For Each dr As DataRow In DataTables("导航").DataRows
    Dim Key As String = dr("图标")
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    lvw.Images.AddImage(Key, Key, Key) \'添加代表这个名称的一对图标
    r.ImageKey = Key \'指定图标键值
    r.Group = dr("分组") \'指定所属分组
    r.Tag = dr
    For Each cl As String In cls \'逐列取值
        \'Select Case cl
        \'Case "人口"
        \'r(cl) = format(dr(cl),"#,000") & "万"
        \'Case "面积"
        \'r(cl) = format(dr(cl),"#,000")  & "k㎡"
        \'Case Else
        r(cl) = dr(cl)
        \'End Select
    Next
Next
lvw.ResumeRedraw() \'恢复绘制
lvw.View = ViewMode.LargeIcon \'显示模式切换为大图标

--  作者:有点蓝
--  发布时间:2020/4/14 19:56:00
--  
完全一样的用法,根据条件获取自己能够看到的分组
--  作者:manyifuwu
--  发布时间:2020/4/14 21:18:00
--  

自己始终看不知道错在哪,麻烦您。帮忙改改吧!
谢谢!

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'停止绘制
lvw.Groups.Clear() \'清除原来的分组
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Details \'显示模式为详细信息
lvw.TitleSize = New Size(130,80) \'设置平铺区域大小
lvw.GridLines  = True \'显示网格线
Dim cls() As String = {"名称"} \'定义列名
Dim wds() As Integer = {100} \'定义列宽
For i As Integer = 0 To  cls.Length - 1  \'增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) \'指定列名
    c.Text = cls(i) \'指定标题,这里标题和列名相同
    c.Width = wds(i) \'指定列宽
Next

Dim zaj As List(of String)
If user.Group = "行政" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'预算\',\'设置\')","序号")
ElseIf  user.Group = "录入" Then
    zaj  = DataTables("导航").GetValues("分组","分组 not in (\'财务\')","序号")
Else
    zaj  = DataTables("导航").GetValues("分组","","序号")
End If


\'\'For Each zh As String In zaj
\'\'Dim grp As List(of String) = DataTables("导航").GetValues("分组","","序号")
\'\' Dim grp As String In DataTables("导航").GetValues("分组","","序号") \'增加分组
\'Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
\'\'Dim grp As WinForm.ListViewGroup = DataTables("导航").GetValues("分组","","序号")
\'grp.Name = zh
\'grp.Text = zh
\'Next



For Each zh As String In zaj
    Dim zh As String In DataTables("导航").GetValues("分组","","序号") \'增加分组
    Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
    grp.Name = zh
    grp.Text = zh
Next






For Each dr As DataRow In DataTables("导航").DataRows
    Dim Key As String = dr("图标")
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    lvw.Images.AddImage(Key, Key, Key) \'添加代表这个名称的一对图标
    r.ImageKey = Key \'指定图标键值
    r.Group = dr("分组") \'指定所属分组
    r.Tag = dr
    For Each cl As String In cls \'逐列取值
        \'Select Case cl
        \'Case "人口"
        \'r(cl) = format(dr(cl),"#,000") & "万"
        \'Case "面积"
        \'r(cl) = format(dr(cl),"#,000")  & "k㎡"
        \'Case Else
        r(cl) = dr(cl)
        \'End Select
    Next
Next
lvw.ResumeRedraw() \'恢复绘制
lvw.View = ViewMode.LargeIcon \'显示模式切换为大图标


自己始终看不知道错在哪,麻烦您。帮忙改改吧!
谢谢!
[此贴子已经被作者于2020/4/14 21:19:53编辑过]