Smobiler上海石磨_.NET移动开发平台

标题: Iconmenwview二级菜单 [打印本页]

作者: 1073096526    时间: 2019-8-21 18:14
标题: Iconmenwview二级菜单
本帖最后由 1073096526 于 2019-8-22 09:58 编辑

[attach]1598[/attach][attach]1597[/attach][attach]1596[/attach]怎么根据身份实现动[attach]1599[/attach]态的Iconmenuview的二级菜单呢。我根据身份得到对应菜单ID DataTable表,在循环每行用ID去找菜单数据,然后该怎么写呢
作者: Lula.Jin    时间: 2019-8-22 10:03
[attach]1600[/attach]
可以参考smoone中的代码,图片中的红框圈出的代码是添加的二级菜单,
之后通过iconMenuview.ShowDialogMenu方法弹出二级目录
作者: 1073096526    时间: 2019-8-22 10:08
Lula.Jin 发表于 2019-8-22 10:03
可以参考smoone中的代码,图片中的红框圈出的代码是添加的二级菜单,
之后通过iconMenuview.ShowDialogMen ...

这个我知道,我按照官网视频上直接显示动态二级是没问题的。
但就是根据身份去判断就不知道了。主要是二级菜单添加的条件是什么,或者说从哪添加。
我现在不是用菜单ID去得到菜单数据了嘛,后面改怎么写。在什么条件下,从哪添加二级。我现在是这个不知道,困惑很久了
作者: 1073096526    时间: 2019-8-22 10:47
Lula.Jin 发表于 2019-8-22 10:03
可以参考smoone中的代码,图片中的红框圈出的代码是添加的二级菜单,
之后通过iconMenuview.ShowDialogMen ...

刚又重新写了一下,现在是能显示全部的二级项了,但是员工也是全部显示。
作者: 1073096526    时间: 2019-8-22 10:48
本帖最后由 1073096526 于 2019-8-22 10:50 编辑

[attach]1601[/attach]这样子是全部显示了,不管管理员还是员工,动态显示还是有问题。到底是哪里不对呀,求解决下呀。或者能按照数据表,现写下嘛

作者: 1073096526    时间: 2019-8-22 10:50
Lula.Jin 发表于 2019-8-22 10:03
可以参考smoone中的代码,图片中的红框圈出的代码是添加的二级菜单,
之后通过iconMenuview.ShowDialogMen ...

能根据数据表,现写嘛
作者: Lula.Jin    时间: 2019-8-22 10:52
你可以先获取登录账号的员工类型 ,在通过员工类型来获取菜单ID的
作者: 1073096526    时间: 2019-8-22 10:57
Lula.Jin 发表于 2019-8-22 10:52
你可以先获取登录账号的员工类型 ,在通过员工类型来获取菜单ID的

对,这我都已经写了。然后呢,或者能说下具体思路嘛。
我是这样子的,根据类型得到对应的ID表,然后循环,用每个ID去找菜单数据。得到对应DataTable表
然后再循环每行,用ID代表父ID得到对于数据表
然后循环每行,当父ID等于一级菜单ID。添加二级菜单
这样有错误嘛,

作者: 1073096526    时间: 2019-8-22 10:59
Lula.Jin 发表于 2019-8-22 10:52
你可以先获取登录账号的员工类型 ,在通过员工类型来获取菜单ID的

DataTable mt = user.GetMenuID(Client.Session["Roler"].ToString());//根据身份得到菜单ID
                       foreach (DataRow data in mt.Rows)
                        {
                            string id = data["RM_MenuID"].ToString();
                            DataTable da = user.GetDataBy(id);//用菜单ID找菜单数据
                            IconMenuViewGroup songrp = new IconMenuViewGroup();//二级菜单
                            foreach(DataRow dd in da.Rows)
                            {
                                DataTable Son = user.GetMPID(dd["M_MenuID"].ToString());//用父ID得到菜单数据
                                foreach (DataRow row in Son.Rows)
                                {
                                    if (row["M_ParentID"].ToString()== dr["M_MenuID"].ToString())
                                    {
                                        songrp.Items.Add(new IconMenuViewItem(row["M_MenuID"].ToString(), row["M_Portrait"].ToString(), row["M_Description"].ToString()));
                                        if (MenuGroupDict.ContainsKey(dr["M_MenuID"].ToString()) == false)
                                        {
                                            MenuGroupDict.Add(dr["M_MenuID"].ToString(), songrp);
                                        }
                                    }
                                   
                                }
                            }

                        }
作者: Lula.Jin    时间: 2019-8-22 11:08
思路就是先获取登录账号的员工类型 ,在通过员工类型来获取菜单ID的,在根据菜单id获取二级子菜单;
至于你的显示不正确就是你数据取的问题,可以打断点看你每次取的数据,你自己的数据库,业务逻辑你应该哪些是正确的数据的
作者: 1073096526    时间: 2019-8-22 12:32
Lula.Jin 发表于 2019-8-22 11:08
思路就是先获取登录账号的员工类型 ,在通过员工类型来获取菜单ID的,在根据菜单id获取二级子菜单;
至于你 ...

那怎么根据菜单id获取二级子菜单,这也就是问题了呀。我数据库也是按照One那样弄的
作者: Lula.Jin    时间: 2019-8-22 14:36
1073096526 发表于 2019-8-22 12:32
那怎么根据菜单id获取二级子菜单,这也就是问题了呀。我数据库也是按照One那样弄的 ...

[attach]1603[/attach]
根据你的图片,在第一张表更具UserID获取到RoleID,
在第二张表中根据第一张表的RoleID和第二张表的RM RoleID  ,获取RM MenuID,
在第三张表通过第二张表查到的RM MenuID   和第三章表的M ParentID   获取到子菜单

作者: 1073096526    时间: 2019-8-22 14:46
Lula.Jin 发表于 2019-8-22 14:36
根据你的图片,在第一张表更具UserID获取到RoleID,
在第二张表中根据第一张表的RoleID和第二张表的RM R ...

对啊,我也是这样写的。现在就是二级是能够实现了,但是管理员还是员工都是全部显示了,没有动态变化
作者: Lula.Jin    时间: 2019-8-22 14:48
1073096526 发表于 2019-8-22 14:46
对啊,我也是这样写的。现在就是二级是能够实现了,但是管理员还是员工都是全部显示了,没有动态变化 ...

那你觉得你思路没错就打断点,看你每次从数据库中取的值是否正确?
作者: jgc517    时间: 2021-8-23 10:35
请问在VB中使用MenuGroupDict应该怎么写?我写的出现这个提示,应该怎么处理?
[attach]2321[/attach]




欢迎光临 Smobiler上海石磨_.NET移动开发平台 (https://www.smobiler.com/) Powered by Discuz! X3.2