CS模式,C#,VS2005
根据表的内容实现动态添加菜单
表结构和内容如下
LoginName   MenuSN     MenuName    MenuImage    MenuEvent
User01       01        采购系统       ..        ..
User01       0101      采购入库       ..        ..
User01       0102      采购退出       ..        ..
User01       0103      采购查询       ..        ..
User01       010301    采购入库查询   ..        ..
User01       010302    采购退出查询   ..        ..
User01       02        销售系统       ..        ..
User01       0201      销售出库       ..        ..
User01       0202      销售退货       ..        ..
User01       0203      销售系统查询   ..        ..
User01       020301    销售出库查询   ..        ..
......
具体结构是根据每个登录名设计不同的菜单(权限表另外设计),其中MenuSN是根据其长度判定,2位为1级菜单,4位为2级子菜单,依此类推。
现在想通过C#,根据上表内容,根据登录名不同,制作动态的菜单,求助各位大虾,如何设计代码?
我主要是不知道怎么判定一级、二级以及其顺序,谢谢  

解决方案 »

  1.   


     //主菜单
            private ToolStripMenuItem tsmiSystem = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiDevice = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiBusiness = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiQuerry = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiHelp = new ToolStripMenuItem();        //System子菜单
            private ToolStripMenuItem tsmiServiceModuleInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiPermissionInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiUserInfoManagement = new ToolStripMenuItem();               //Device子菜单
            private ToolStripMenuItem tsmiDistrictInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiSubDistrictInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiProjectInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiCCTDeviceInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiRPTDeviceInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiMeshMCUDeviceInfoManagement = new ToolStripMenuItem();
            private ToolStripMenuItem tsmiGprsMCUDeviceInfoManagement = new ToolStripMenuItem();        //Business子菜单
            private ToolStripMenuItem tsmiJobTable = new ToolStripMenuItem();        //Querry子菜单
            private ToolStripMenuItem tsmiSystemLog = new ToolStripMenuItem();        //Help子菜单
            private ToolStripMenuItem tsmiAbout = new ToolStripMenuItem();
            private void InitMenuStrip1()
            {
                //主菜单
                tsmiSystem.Name = "tsmiSystem";
                tsmiDevice.Name = "tsmiDevice";
                tsmiBusiness.Name = "tsmiBusiness";
                tsmiQuerry.Name = "tsmiQuerry";
                tsmiHelp.Name = "tsmiHelp";            menuStrip1.Items.Add(tsmiSystem);
                menuStrip1.Items.Add(tsmiDevice);
                menuStrip1.Items.Add(tsmiBusiness);
                menuStrip1.Items.Add(tsmiQuerry);
                menuStrip1.Items.Add(tsmiHelp);            //System子菜单
                tsmiServiceModuleInfoManagement.Name = "tsmiServiceModuleInfoManagement";
                tsmiPermissionInfoManagement.Name = "tsmiPermissionInfoManagement";
                tsmiUserInfoManagement.Name = "tsmiUserInfoManagement";            this.tsmiServiceModuleInfoManagement.Click += tsmiServiceModuleInfoManagement_Click;
                this.tsmiPermissionInfoManagement.Click += tsmiPermissionInfoManagement_Click;
                this.tsmiUserInfoManagement.Click += tsmiUserInfoManagement_Click;            tsmiSystem.DropDownItems.Add(tsmiServiceModuleInfoManagement);
                tsmiSystem.DropDownItems.Add(tsmiPermissionInfoManagement);
                tsmiSystem.DropDownItems.Add(tsmiUserInfoManagement);            //Device子菜单
                tsmiDistrictInfoManagement.Name = "tsmiDistrictInfoManagement";
                tsmiSubDistrictInfoManagement.Name = "tsmiSubDistrictInfoManagement";
                tsmiProjectInfoManagement.Name = "tsmiProjectInfoManagement";
                tsmiCCTDeviceInfoManagement.Name = "tsmiCCTDeviceInfoManagement";
                tsmiRPTDeviceInfoManagement.Name = "tsmiRPTDeviceInfoManagement";
                tsmiMeshMCUDeviceInfoManagement.Name = "tsmiMeshMCUDeviceInfoManagement";
                tsmiGprsMCUDeviceInfoManagement.Name = "tsmiGprsMCUDeviceInfoManagement";                       this.tsmiDistrictInfoManagement.Click += tsmiDistrictInfoManagement_Click;
                this.tsmiSubDistrictInfoManagement.Click += tsmiSubDistrictInfoManagement_Click;
                this.tsmiProjectInfoManagement.Click += tsmiProjectInfoManagement_Click;
                this.tsmiCCTDeviceInfoManagement.Click += tsmiCCTDeviceInfoManagement_Click;
                this.tsmiRPTDeviceInfoManagement.Click += tsmiRPTDeviceInfoManagement_Click;
                this.tsmiMeshMCUDeviceInfoManagement.Click += tsmiMeshMCUDeviceInfoManagement_Click;
                this.tsmiGprsMCUDeviceInfoManagement.Click += tsmiGprsMCUDeviceInfoManagement_Click;            tsmiDevice.DropDownItems.Add(tsmiDistrictInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiSubDistrictInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiProjectInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiCCTDeviceInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiRPTDeviceInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiMeshMCUDeviceInfoManagement);
                tsmiDevice.DropDownItems.Add(tsmiGprsMCUDeviceInfoManagement);                        //Business子菜单
                tsmiJobTable.Name = "tsmiJobTable";            this.tsmiJobTable.Click += tsmiJobTable_Click;            tsmiBusiness.DropDownItems.Add(tsmiJobTable);            //Querry子菜单
                tsmiSystemLog.Name = "tsmiSystemLog";            this.tsmiSystemLog.Click += tsmiSystemLog_Click;            tsmiQuerry.DropDownItems.Add(tsmiSystemLog);            //Help子菜单
                tsmiAbout.Name = "tsmiAbout";            this.tsmiAbout.Click += tsmiAbout_Click;            tsmiHelp.DropDownItems.Add(tsmiAbout);
            }
      

  2.   

    我觉得你这个应该是数据库设计结构有问题,而且你的问题主要应该是SQL查询语句的设计 问题,由DBA来设计查询语句会更好些。你主要做下控件的动态添加 就好了
      

  3.   

    要是我就是 *.Enabled = false; 不给调用就行了但是要给他看到这个功能,这样菜单下面选项多点看着也舒服。。