C#关于角色权限系统

本文介绍了一个基于角色的权限管理系统的设计与实现过程,包括创建角色权限表、插入权限数据及通过C#代码设置菜单权限等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建角色权限表

create table t_GroupFormsAuthority(

--FGfaID    numeric(6,0) identity primary key , 
FUGroupNo   varchar(50) not null ,
FSFormNo   varchar(100) not null ,--系统窗口、报表代码
FGfaIsOk   char(1) default '1' ,
FStatus    char(1) default '1',---
FFlag      char(1) default '1',---
FCreateDate             datetime default getdate()   ,
FCreator          varchar(20) null ,
FModifyDate             datetime default getdate()   ,
FModifier          varchar(20) null ,
FMemo              text null ,
        constraint PK_t_GroupFormsAuthority primary key(FUGroupNo,FSFormNo) 
)

go


2.插入数据

Admin MenuItemBase 1 1
Admin MenuItemBase_01 1 1
Admin MenuItemFile 1 1
Admin MenuItemFile_Exit 1 1
Admin MenuItemFile_Print 1 1
Admin MenuItemHelp 1 1
Admin MenuItemWindow 1 1


3、新建项目
1、界面如图,
加入菜单项并命名为:menuMain
2、程序代码:
新建代码文件:setMenu.cs


using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;
using DBClassLib;namespace ERP
{
    public class SetMenu
    {
        private MenuStrip msMain;        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="mMain"></param>
        public SetMenu(MenuStrip mMain)
        {
            msMain = mMain;
            msMain.Visible = true;
        
        }        /// <summary>
        /// 设置菜单权限
        /// </summary>
        public void SetMenuPower()
        {
            string strSql;
            int mItemCount, i, j;
            mItemCount = msMain.Items.Count;
            strSql = "SELECT FSFormNo,FGfaIsOk FROM t_GroupFormsAuthority WHERE FStatus='1' AND FUGroupNo='" + Global.userInfo[2] + "'";
            DBOperator db = DBOperator.GetDBOperator(Global.strConnection);
            DataTable dt = new DataTable();
            db.Open();
            dt = db.GetDataTable(strSql);
            if (dt.Rows.Count > 0)
            {
                for (i = 0; i < mItemCount; i++)
                {
                    for (j = 0; j < dt.Rows.Count; j++)
                    {
                        if ((msMain.Items[i].Name.ToString() == dt.Rows[j]["FSFormNo"].ToString()) && (dt.Rows[j][1].ToString() == "1"))
                        {
                            SetMenuItemUsability(msMain.Items[i], true);
                            GetSubMenu(dt,(ToolStripMenuItem) msMain.Items[i]);
                            break;
                        }
                        else
                        {
                            SetMenuItemUsability(msMain.Items[i], false);
                        }
                    }
                }
            }
            else
            {
                msMain.Visible = false;
            }          
       db.Close();      
  }    
    private void GetSubMenu(DataTable dt, ToolStripMenuItem tsmItem)//ToolStripItem mItems)
        {
            //ToolStripMenuItem tsmItem=new ToolStripMenuItem() ;
            int i,j,mItemsCount;
            mItemsCount = tsmItem.DropDownItems.Count;          
           if (mItemsCount > 0)
            {
                for (i = 0; i < mItemsCount; i++)
                {
                    for (j = 0; j < dt.Rows.Count; j++)
                    {
                        if (tsmItem.DropDownItems[i].Name == dt.Rows[j][0].ToString() && dt.Rows[j][1].ToString() == "1")
                        {
                            SetMenuItemUsability(tsmItem.DropDownItems[i], true);
                            break;                        }
                        else
                        {
                            SetMenuItemUsability(tsmItem.DropDownItems[i], false);
                        }
                    }
                }
            }
        }        /// <summary>
        /// 设置菜单可用性

4、主窗口调用:
SetMenu sm=new SetMenu(menuMain);
sm.SetMenuPower();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值