权限管理几乎是任何系统都有的,有的权限较简单,而有的权限比较复杂,下面的这种方法是控制模块权限的一种常用方法,

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

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

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




  


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

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

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

                }

            }

        }

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


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

   private void cklb_Function_ItemCheck(object sender, ItemCheckEventArgs e)
        
{
            
try
            
{

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

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


            }

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

        }


全选和全删
 private void btn_AllSelect_Click(object sender, EventArgs e)
        
{
            
for (int i = 0; i < cklb_Function.Items.Count; i++)
            
{
                cklb_Function.SetItemChecked(i, 
true);
            }

        }


        
private void btn_AllDel_Click(object sender, EventArgs e)
        
{
            
for (int i = 0; i < cklb_Function.Items.Count; i++)
            
{
                cklb_Function.SetItemChecked(i, 
false);
            }

posted on 2008-08-23 13:31  睿达团队  阅读(651)  评论(0编辑  收藏  举报