arrow2 软件系统 arrow2 编程技术
C#遍历菜单并设置权限
C#,菜单
2008-01-10 19:07:25  

字体         收藏 推荐 打印 关闭

一、加入数据
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


二、新建项目
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=mMainparam
        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
         设置菜单可用性
         summary
         param name=mItem菜单项param
         param name=mUsability是否可用param
        private void SetMenuItemUsability(ToolStripItem mItem, bool mUsability)
        {
            mItem.Visible = mUsability;   是否可见
            mItem.Enabled = mUsability;     是否可用
       
        }
    }
}


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


来自:不详   作者: 未知   责任编辑:admin | 返回顶部


用户评论
文章分类


名称 作者 内容 论坛

关键字
C#,菜单

google中搜索
相关文章
  · C# 打造个性 ...
  · C#实现回车自 ...
  · 用C#轻松在DOT ...
  · C#的图形绘制 ...
  · C#制作图像旋 ...
  · 一段用C#生成 ...
  · 利用C#制作公 ...
  · C#生成中文汉 ...
  · C#下的实现在 ...
  · 在C#的WinForm ...
  · 用C# 编写完全 ...

最新发表
  ·  C# 打造个性浏览器
  ·  域名解析操作说明
  ·  W2K下安装MYSQL 4.0.21
  ·  Asp.net中执行Url重写
  ·  第三方Web Html Editor的使用
  ·  Iframe跨域问题.
  ·  垃圾邮件评判优化
  ·  如何对电子商务系统进行需求分析
  ·  IPS支付说明
  ·  谈谈PHP文章系统和SEO的关系