以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  listview的问题(已联系客服远程解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68395)

--  作者:even0898
--  发布时间:2015/5/16 15:31:00
--  listview的问题(已联系客服远程解决)

结合权限的代码设置后,老是多添加一组出来,如图

添加分组的代码标红,老是自动添加一组名为Default的组出来,怎么去掉呢?


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150516152535.jpg
图片点击可在新窗口打开查看
Dim qcr As DataRow = DataTables("用户表").SQLFind("用户名 = \'" & _User & "\'")
Functions.Execute("动态添加lable")
e.Form.BackColor = SystemColors.GradientInactiveCaption
Dim lvw As WinForm.ListView = Forms("主界面").Controls("ListView1")
Dim Nav As WinForm.NavBar = Forms("主界面").Controls("NavBar1")
If _User <> "管理员"
    \'隐藏未编辑项目
    For Each pg As WinForm.NavPage In Nav.NavPages
        Dim pgn As String = pg.Name
        Dim dr As DataRow = DataTables("授权表").SQLFind("模块名称 = \'" & pgn & "\' And 对象窗口 is NUll And 对象名称 Is Null")
        If dr IsNot Nothing
            Dim uss As String = dr("被授权人")
            If uss.Contains(_User) = True OrElse uss.Contains(qcr("职位")) = True
      pg.Visible = True
Else
pg.Visible = False
            End If
Else
pg.Visible = False
        End If
    Next
    \'\'\'\'-----------------------
    lvw.StopRedraw() \'暂停绘制
    lvw.Rows.Clear() \'清除原来的行
    lvw.Images.Clear() \'清除原来的图片
    lvw.View = ViewMode.LargeIcon \'显示模式为大图标
    lvw.Images.LargeSize = New Size(32,32) \'定义大图标尺寸
    lvw.MultiSelect = False
    Dim nms As List(of String) = DataTables("导航菜单").GetValues("模块名称")
    For Each nm As String In nms \'添加分组
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        \'====
        Dim dr As DataRow = DataTables("授权表").SQLFind("模块名称 = \'" & nm & "\' And 对象窗口 is NUll And 对象名称 Is Null")
        If dr IsNot Nothing
            Dim uss As String = dr("被授权人")
            If uss.Contains(_User) = True OrElse uss.Contains(qcr("职位")) = True
                \'MessageBox.show(nm)
                grp.Name = nm
                grp.Text = nm
            End If
        End If
        \'===
    Next
    For Each dr As DataRow In DataTables("导航菜单").DataRows \'从数据表中提取数据
        Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
        Dim Key As String = dr("图标地址")\'获取此员工的照片文件
        lvw.Images.AddLargeImage(key,key) \'添加照片,直接用文件名作为图片键值
        Dim ccr As DataRow = DataTables("授权表").SQLfind("对象窗口 = \'" & dr("元素名称") & "\' And 对象名称 is null")
        If ccr IsNot Nothing
            Dim uss As String = ccr("被授权人")
            If uss.Contains(_User) = True OrElse uss.Contains(qcr("职位")) = True
                vr.Group = dr("模块名称")
                vr.Text = dr("元素名称")  \'设置标题
                vr.ImageKey = key \'设置图片键值
                vr.ToolTipText = dr("功能概述")
            End If
        End If
    Next
    lvw.ResumeRedraw() \'恢复绘制
    \'===========================================================
Else
    lvw.StopRedraw() \'暂停绘制
    lvw.Rows.Clear() \'清除原来的行
    lvw.Images.Clear() \'清除原来的图片
    lvw.View = ViewMode.LargeIcon \'显示模式为大图标
    lvw.Images.LargeSize = New Size(32,32) \'定义大图标尺寸
    lvw.MultiSelect = False
    Dim nms As List(of String) = DataTables("导航菜单").GetValues("模块名称")
    For Each nm As String In nms \'添加分组
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        grp.Name = nm
        grp.Text = nm
    Next
    For Each dr As DataRow In DataTables("导航菜单").DataRows \'从数据表中提取数据
        Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
        Dim Key As String = dr("图标地址")\'获取此员工的照片文件
        lvw.Images.AddLargeImage(key,key) \'添加照片,直接用文件名作为图片键值
        vr.Group = dr("模块名称")
        vr.Text = dr("元素名称")  \'设置标题
        vr.ImageKey = key \'设置图片键值
        vr.ToolTipText = dr("功能概述")
    Next
    lvw.ResumeRedraw() \'恢复绘制
End If


--  作者:Bin
--  发布时间:2015/5/16 15:35:00
--  
For Each nm As String In nms \'添加分组
        messagebox.show(nm)  \' 看看是不是有Defalut  是不是你NMS里面本来就有. 到表里删除它
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        \'====
        Dim dr As DataRow = DataTables("授权表").SQLFind("模块名称 = \'" & nm & "\' And 对象窗口 is NUll And 对象名称 Is Null")
        If dr IsNot Nothing
            Dim uss As String = dr("被授权人")
            If uss.Contains(_User) = True OrElse uss.Contains(qcr("职位")) = True
                \'MessageBox.show(nm)
                grp.Name = nm
                grp.Text = nm
            End If
        End If
        \'===
    Next

--  作者:even0898
--  发布时间:2015/5/16 15:37:00
--  
 show过了,没有
--  作者:Bin
--  发布时间:2015/5/16 15:38:00
--  
不会吧,不可能自己添加的.你注译这段代码看看.如果还有.说明你其他地方有代码添加了一个分组
--  作者:Bin
--  发布时间:2015/5/16 15:40:00
--  
懒得找的话,可以用代码把它删了  http://www.foxtable.com/help/topics/2847.htm
--  作者:even0898
--  发布时间:2015/5/16 15:47:00
--  

晕了,注释后直接没分组了

删除也删除不了

 For Each nm As String In nms \'添加分组
        MessageBox.show(nm)
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        \'====
        Dim dr As DataRow = DataTables("授权表").SQLFind("模块名称 = \'" & nm & "\' And 对象窗口 is NUll And 对象名称 Is Null")
        If dr IsNot Nothing
            Dim uss As String = dr("被授权人")
            If uss.Contains(_User) = True OrElse uss.Contains(qcr("职位")) = True
                grp.Name = nm
                grp.Text = nm
            End If
        End If
        \'===
        lvw.Groups.Delete("Default")
    Next


--  作者:Bin
--  发布时间:2015/5/16 15:48:00
--  
放到所有代码最后面.
--  作者:Bin
--  发布时间:2015/5/16 15:49:00
--  
实在搞不定就上个例子吧 
--  作者:even0898
--  发布时间:2015/5/16 15:51:00
--  
这个好复杂啊,要不我发源代码给你
--  作者:Bin
--  发布时间:2015/5/16 15:52:00
--  
看 7  8楼. 做个例子发上来即可