Foxtable(狐表)用户栏目专家坐堂 → [求助]动态生成多级菜单


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

主题:[求助]动态生成多级菜单

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


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

cmd.CommandText = "sele ct * from {菜单管理表} where 窗体名称 = '" & e.Form.Name & "' and 名称 is not null"
Dim csdt As DataTable = cmd.ExecuteReader
For Each cr As DataRow In csdt.Select("层数=1")
    Dim mnu As Winform.Strip
    If cr("菜单类型") = "MainMenu"
        mnu = e.Form.Strips.Add(cr("名称"),StripTypeEnum.MainMenu)
    ElseIf cr("菜单类型") = "ContextMenu"
        ......
    End If
    If mnu IsNot Nothing
        Functions.Execute("增加菜单",mnu,csdt,cr("ID"))
    End If
Next

函数

Dim mnu As Winform.Strip = args(0)
Dim csdt As DataTable = args(1)
Dim id As Integer = args(2)

For Each cr As DataRow In csdt.Select("父阶id=" & id)
    Dim itm As WinForm.StripItem
    If cr("菜单类型") = "MenuItem"
        mnu.Items.Add(dr("名称"),dr("标题"),dr("图标") ,StripItemTypeEnum.MenuItem)
    ElseIf cr("菜单类型") = "Button"
        ……
    End If
    itm = mnu.Items(dr("名称"))
    Functions.Execute("增加菜单",itm ,csdt,cr("ID"))
Next

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


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

Dim mnu As object = args(0)

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


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

使用枚举值是个办法

For Each item As StripItemTypeEnum In [Enum].GetValues(Gettype(StripItemTypeEnum))
    Output.Show(item & "-" & item.Tostring())
Next

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


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

都没有递归,当然无法生成

函数

Dim mnu As object = args(0)
Dim csdt As DataTable = args(1)
Dim id As Integer = args(2)

For Each dr As DataRow In csdt.Select("父阶id =" & id)
    mnu.Items.Add(dr("名称"),dr("标题"),dr("图标") ,dr("菜单ID")) 

Functions.Execute("增加菜单id",mnu.Items(dr("名称")),csdt,dr("ID"))

Next


 回到顶部