Foxtable(狐表)用户栏目专家坐堂 → 递归函数应用——动态菜单生成


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

主题:递归函数应用——动态菜单生成

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


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
递归函数应用——动态菜单生成  发帖心情 Post By:2016/7/13 23:25:00 [显示全部帖子]

折腾了几天,用递归函数实现了动态生成菜单。
图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看




[此贴子已经被作者于2016/8/18 16:50:32编辑过]

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


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
回复:(大红袍) 不错,不错。有没有源码?  发帖心情 Post By:2016/7/14 8:39:00 [显示全部帖子]

这么晚还在看帖子啊,源码有。感觉没人喜欢啊,关注多了再贴吧,冷场太失落了啊。

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


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
  发帖心情 Post By:2016/8/18 16:48:00 [显示全部帖子]

前段时间有点忙,不好意思,我现在把源码贴出来,大师们莫要笑话哦。
'''动态函数应用*********************************************************
Dim pid As String = args(0)
Dim pmenu As object= args(1)
Dim nmenu As object
Dim dt As DataTable = args(2)
Dim drs As List(of DataRow)
drs = DataTables("otb_ModelMenu") .Select("ParentID = '" & pid & "'")
For Each dr As DataRow In drs
    Select Case dr("strMenuCategory")
        Case "RibbonTabs"
            nmenu = new RibbonMenu.Tab(dr("ID"))
            nmenu.text =dr("strMenuCaption")
            RibbonTabs.add(nmenu)
        Case Else
            Select Case dr("strMenuCategory")
                Case "Groups"
                    nmenu = new RibbonMenu.Group(dr("ID"))
                    nmenu.text =dr("strMenuCaption")
                    pmenu.Groups.add(nmenu)
                Case "Separator"
                    nmenu = new RibbonMenu.Separator(dr("ID"))
                    pmenu.Items.add(nmenu)
                Case "LeftItems","RightItems","BottomItems"
                    nmenu = Nothing
                Case Else
                    Select Case dr("strMenuCategory")
                        Case "MenuButton"
                            nmenu = new RibbonMenu.MenuButton(dr("ID"))
                        Case "Button"
                            nmenu = new RibbonMenu.Button(dr("ID"))
                        Case "TextBox"
                            nmenu = new RibbonMenu.TextBox(dr("ID"))
                        Case "DatePicker"
                            nmenu = new RibbonMenu.DatePicker(dr("ID"))
                        Case "NumericBox"
                            nmenu = new RibbonMenu.NumericBox(dr("ID"))
                        Case "TimePicker"
                            nmenu = new RibbonMenu.TimePicker(dr("ID"))
                        Case "NumericBox"
                            nmenu = new RibbonMenu.NumericBox(dr("ID"))
                        Case "ComboBox"
                            nmenu = new RibbonMenu.ComboBox(dr("ID"))
                        Case "Label"
                            nmenu = new RibbonMenu.Label(dr("ID"))
                        Case "CheckBox"
                            nmenu = new RibbonMenu.Checkbox(dr("ID"))
                        Case "ColorPicker"
                            nmenu = new RibbonMenu.ColorPicker(dr("ID"))
                        Case "FontComboBox"
                            nmenu = new RibbonMenu.FontComboBox(dr("ID"))
                        Case "ColorPicker"
                            nmenu = new RibbonMenu.ColorPicker(dr("ID"))
                    End Select
                    '************************************以下考虑程序菜单的特殊性'
                    Dim drs1 As DataRow =  DataTables("otb_ModelMenu").find("ID = '" & pid & "'") '如果父键id类型是一下几种的话就执行下面
                    If drs1 IsNot Nothing Then
                        Select Case drs1("strMenuCategory")
                            Case "LeftItems"
                                nmenu.text =dr("strMenuCaption")
                                nmenu.smallImage = getimage(dr("strMenuImage"))
                                ApplicationMenu.LeftItems.add(nmenu)
                                'nmenu = ApplicationMenu.LeftItems(nmenu)
                            Case "RightItems"
                                nmenu.text =dr("strMenuCaption")
                                nmenu.smallImage = getimage(dr("strMenuImage"))
                                ApplicationMenu.RightItems.add(nmenu)
                                'nmenu = ApplicationMenu.RightItems(nmenu)
                            Case "BottomItems"
                                nmenu.text =dr("strMenuCaption")
                                nmenu.smallImage = getimage(dr("strMenuImage"))
                                ApplicationMenu.BottomItems.add(nmenu)
                                'nmenu = ApplicationMenu.BottomItems(nmenu)
                            Case Else
                                nmenu.text =dr("strMenuCaption")
                                nmenu.smallImage = getimage(dr("strMenuImage"))
                                pmenu.Items.add(nmenu)
                        End Select
                    End If
            End Select
    End Select
    Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
Next

[此贴子已经被作者于2016/8/18 16:48:57编辑过]

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


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
  发帖心情 Post By:2016/8/18 16:55:00 [显示全部帖子]

''应用测试*************************
'Dim mymenu As C1Ribbon.C1Ribbon = GetRibbon() '使用全局函数,是菜单暂停绘制防止闪烁,带来好的体验
'mymenu.BeginUpdate()
'RibbonTabs.Clear
'QAT.Items.Clear
'ConfigBar.Items.Clear
'TopToolBar.Items.clear
'BottomToolBar.Items.clear
'ApplicationMenu.BottomItems.clear
'ApplicationMenu.LeftItems.clear
'ApplicationMenu.RightItems.clear
'
'Dim nmenu As object
'Dim cmd As new SQLCommand
'Dim dt As DataTable
'cmd.C
'cmd.CommandText = "s e l e c t * from {otb_ModelMenu} where strModelName = '系统设置' ORDER BY intSortCode " ’把注释去掉,然后把select字母之间的空格去掉。
'dt = cmd.ExecuteReader '获得本模块的菜单数据'
'For Each dr As DataRow In dt.datarows
    'If dr.IsNull("ParentID") Then
        'Select Case dr("strMenuCategory")
            'Case "RibbonTab"
                'nmenu = Nothing
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "QAT"
                'nmenu = QAT
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "ConfigBar"
                'nmenu = ConfigBar
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "TopToolBar"
                'nmenu = TopToolBar
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "BottomToolBar"
                'nmenu = BottomToolBar
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "ApplicationMenu"
                'nmenu = Nothing
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
            'Case "ContextMenu"
                'nmenu = Nothing
                'Functions.Execute("funAddMenu1",dr("ID"),nmenu,dt)
        'End Select
    'End If
'Next
'mymenu.EndUpdate()
[此贴子已经被作者于2016/8/18 17:08:54编辑过]

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


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
回复:(188802386)关注,期待源码  发帖心情 Post By:2016/8/31 11:32:00 [显示全部帖子]

已经发了

 回到顶部