以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]菜单展现问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134833)

--  作者:xndd
--  发布时间:2019/5/10 10:59:00
--  [求助]菜单展现问题

遇到一个菜单问题,无法循环判断并且剔除不想显示的菜单了。或者有更好的展现方式,谢谢版主!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:pic_2019-05-10_10-49-17.jpg
图片点击可在新窗口打开查看

这是菜单表,我添加了一个列:菜单子项,用来在tv中展现,而不要在上方ribbon菜单中体现,但是如下图,ribbon会有,我循环判断出错,不知道怎么办,或者版主有更好的办法:

 


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

之前的代码如下:

 

If RibbonTabs.Count > 5 Then
    Return
Else
   
   
    Dim drs As List(Of DataRow)
    drs = DataTables("菜单表").Select("[功能区] Like \'*\'","OrderID")
   
    For Each dr As DataRow In drs
        Dim tab As New RibbonMenu.Tab(dr("功能区"))
        If not RibbonTabs.Contains(dr("功能区")) Then
            tab.Text = dr("功能区")
            RibbonTabs.Add(tab)
        End If
    Next
   
    For Each dr As DataRow In drs
        Dim rg As New RibbonMenu.group(dr("功能组"))
        If not RibbonTabs(dr("功能区")).groups.Contains(dr("功能组")) Then
            rg.Text = dr("功能组")
            RibbonTabs(dr("功能区")).Groups.Add(rg)
        End If
    Next
   
    For Each dr As DataRow In drs
        If dr("项类型") = "RibbonMenu.Separator" Then
            Dim rb As new RibbonMenu.Separator(dr("功能项"))
            RibbonTabs(dr("功能区")).Groups(dr("功能组")).Items.Add(rb)
        Else
            Dim itm As RibbonMenu.RibbonItem
            For Each itm In RibbonTabs("功能区").Groups("功能组").Items
                If Typeof itm Is RibbonMenu.Button Then
                    If itm.Text <> dr("功能项") Then
                        Dim rb As New RibbonMenu.Button(dr("功能项"))
                        rb.Text = dr("功能项")
                        rb.LargeImage = GetImage(ProjectPath & "Images\\" & dr("图标"))
                        rb.TextImageRelation = TextImageRelationEnum.ImageAboveText
                        RibbonTabs(dr("功能区")).Groups(dr("功能组")).Items.Add(rb)
                    End If
                End If
            Next
           
           
           
        End If
    Next
   
   
End If

 

 

 

窗体中的代码:

\'动态生成目录树
Dim gnq As String = RibbonTabs.SelectedTab.Name
Functions.Execute("ChangeTV",e.Form,gnq)

 

ChangeTV代码:

\'动态切换树
Dim tv1 As WinForm.TreeView = Args(0).Controls("TreeView1")
tv1.BuildTree("菜单表","功能项|功能子项","功能区 = \'"& Args(1) &"\'","OrderID ASC")
tv1.ExpandAll()


--  作者:有点甜
--  发布时间:2019/5/10 11:25:00
--  

这个代码改一下

 

drs = DataTables("菜单表").Select("[功能区] Like \'*\' and 功能子项 is null","OrderID")


--  作者:xndd
--  发布时间:2019/5/10 11:28:00
--  
可以了,总觉得自己好傻好傻的