`
isiqi
  • 浏览: 16030078 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

CS程序中基于菜单和工具栏的权限设计

J# 
阅读更多

用户管理:右边的功能列表是所有子菜单的Text属性,使用的是(CheckedListBox)。



设置权限之后登录的效果图如下所示,没有打勾的选项都变成了灰色不可用状态。




基本方法是这样的:权限表中存储权限(子菜单的Text属性的值),用户表中存储登录系统的用户,
权限表存储用户对应的所有权限(用0和1来表示是否有访问的权限)。

主窗体一加载的时候,取出所有子菜单对象:

List<ToolStripMenuItem>list=newList<ToolStripMenuItem>();

//取出所有子菜单,添加到集合
for(inti=0;i<this.menu.Items.Count;i++)
{
ToolStripDropDownItemmenuItems
=(ToolStripDropDownItem)menu.Items[i];
if(menuItems.HasDropDownItems)
{
for(intk=0;k<menuItems.DropDownItems.Count;k++)
{
list.Add((ToolStripMenuItem)menuItems.DropDownItems[k]);
}

}

}

}

取出用户对应的权限,和刚才取出的菜单对比,没有权限的就禁用掉。

//读取相应的权限
DataSetds=UR.LaodUsersRight(Share.UserID);

if(!DataHelper.IsNullDataSet(ds))
{
DataTabledt
=ds.Tables[0];

if(!DataHelper.IsNullDataTable(dt))
{
for(inti=0;i<dt.Rows.Count;i++)
{
for(intj=0;j<list.Count;j++)
{
if(dt.Rows[i]["IsOk"].ToString()=="True")
{
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
{
list[j].Enabled
=true;
break;
}

}

else
{
if(dt.Rows[i]["RightName"].ToString()==list[j].Text)
{
list[j].Enabled
=false;
break;
}

}

}

}


//遍历所有的工具栏
for(intk=0;k<this.toolStrip1.Items.Count;k++)
{
for(intz=0;z<dt.Rows.Count;z++)
{
if(dt.Rows[z]["IsOk"].ToString()=="True")
{
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
{
toolStrip1.Items[k].Enabled
=true;
break;
}

}

else
{
if(toolStrip1.Items[k].Text.Trim()==dt.Rows[z]["RightName"].ToString())
{
toolStrip1.Items[k].Enabled
=false;
break;
}

}

}

}

}

else
{
this.menu.Enabled=false;
this.toolStrip1.Enabled=false;
}


}

else
{
this.menu.Enabled=false;
this.toolStrip1.Enabled=false;
}

下面是关于CheckedListBox的部分代码:

privatevoidcklb_Function_ItemCheck(objectsender,ItemCheckEventArgse)
{
try
{

stringuid=dgv_Users.SelectedRows[0].Cells["操作员"].Value.ToString();
stringrid=cklb_Function.SelectedValue.ToString();
if(Convert.ToBoolean(e.CurrentValue))
{
ur.UpdateUserRight(uid,rid,
false);
}

else
{
ur.UpdateUserRight(uid,rid,
true);
}


}

catch(Exceptionex)
{
MsgBox.Error(ex.Message);
}

}


全选和全删

privatevoidbtn_AllSelect_Click(objectsender,EventArgse)
{
for(inti=0;i<cklb_Function.Items.Count;i++)
{
cklb_Function.SetItemChecked(i,
true);
}

}


privatevoidbtn_AllDel_Click(objectsender,EventArgse)
{
for(inti=0;i<cklb_Function.Items.Count;i++)
{
cklb_Function.SetItemChecked(i,
false);
}

}

分享到:
评论

相关推荐

    html5+css实现旅行网站.zip

    运用HTML、CSS、JavaScript、jQuery等相关技术和DreamweaverCS6工具设计一个爱旅行旅游网站,要求网站具有用户登录验证、用户登陆后显示用户名,分为管理员、注册用户、游客三种访问权限,管理员可以修改后台信息、...

    Access 2000数据库系统设计(PDF)---002

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---001

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---003

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---018

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---011

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---020

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---009

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---012

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---015

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---027

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---025

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---026

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    Access 2000数据库系统设计(PDF)---029

    26812.2.1 为窗体选择数据源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计窗口 27212.3.1 窗体设计窗口的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 ...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    移动开发HTML5设计.zip

    网站具有图片轮播效果、鼠标对图片的进入和移出特效、点击小图放大图片特效、文字超链接、图片超链接、锚链接、菜单栏、景点预定须知、景点简介、交通指南、用户点评功能、div分块、CSS样式、下拉菜单、景点门票预订...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

Global site tag (gtag.js) - Google Analytics