天道酬勤

博观而约取,厚积而薄发!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

winform权限管理实现【转】

Posted on 2010-04-29 17:05  Happy Coding  阅读(1561)  评论(1编辑  收藏  举报

winform权限管理实现

效果图:

技术实现:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace HHLInfoManage
{
    public partial class frmQuanXGL : Form
    {
        public frmQuanXGL()
        {
            InitializeComponent();
            //设置权限树展开
            this.QuanXtreeView.ExpandAll();
            //绑定角色
            Common.AccessDataOperation Data = new HHLInfoManage.Common.AccessDataOperation();
            DataTable table = Data.GetDataTable("select distinct Role from QuanX");
            this.RoletreeView.Nodes[0].Nodes.Clear();
            for (int n = 0; n < table.Rows.Count; n++)
            {
                this.RoletreeView.Nodes[0].Nodes.Add(table.Rows[n][0].ToString());
            }
            this.RoletreeView.ExpandAll();
        }

        private void ExitbuttonX_Click(object sender, EventArgs e)
        {
            //关闭窗体
            this.Close();
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //删除角色
            if (this.RoletreeView.SelectedNode != null && this.RoletreeView.SelectedNode.Text!="所有角色")
            {
                if (MessageBox.Show("你确实要删除该角色吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Common.AccessDataOperation Data = new HHLInfoManage.Common.AccessDataOperation();
                    //删除角色
                    string comText = "delete from QuanX where Role='"+this.RoletreeView.SelectedNode.Text+"'";
                    Data.ExecSql(comText);
                    MessageBox.Show("删除成功!","提示");
                    //重新绑定角色
                    DataTable table = Data.GetDataTable("select distinct Role from QuanX");
                    this.RoletreeView.Nodes[0].Nodes.Clear();
                    for (int n = 0; n < table.Rows.Count; n++)
                    {
                        this.RoletreeView.Nodes[0].Nodes.Add(table.Rows[n][0].ToString());
                    }
                }
                this.RoletreeView.ExpandAll();
            }
            else
            {
                MessageBox.Show("请选择角色!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        void AllTreeView(TreeNodeCollection node, bool check)
        {
            /*递归,为选中的父节点选中子节点*/
            foreach (System.Windows.Forms.TreeNode node1 in node)
            {
                if (node1.Nodes.Count != 0)
                {

                    node1.Checked = check;
                    this.AllTreeView(node1.Nodes, node1.Checked);

                }
                else
                {
                    node1.Checked = check;
                }
            }
        }

        private void QuanXtreeView_BeforeCheck(object sender, TreeViewCancelEventArgs e)
        {
            /*为选中的父节点选中子节点*/
            this.AllTreeView(e.Node.Nodes, !(e.Node.Checked));
        }

        private void SavebuttonX_Click(object sender, EventArgs e)
        {
            //保存数据
            if (this.AddRoletextBoxX.Text.Trim().Length == 0)
            {
                MessageBox.Show("角色名称不能为空!","提示");
                return;
            }
            string Role=this.AddRoletextBoxX.Text.Trim();
            //验证权限
            List<string> List=new List<string>();
            foreach (TreeNode Node1 in this.QuanXtreeView.Nodes[0].Nodes)
            {
                if (Node1.Checked)
                {
                    List.Add(Node1.Tag.ToString());
                }
                foreach (TreeNode Node2 in Node1.Nodes)
                {
                    if (Node2.Checked)
                    {
                        List.Add(Node2.Tag.ToString());
                    }
                }
            }
            if (List.Count == 0)
            {
                MessageBox.Show("请选择权限!", "提示");
                return;
            }
            Common.AccessDataOperation DataOperation = new HHLInfoManage.Common.AccessDataOperation();
            string comText = "";
            comText = "delete from QuanX where Role='"+Role+"'";
            DataOperation.ExecSql(comText);
            for (int n = 0; n < List.Count; n++)
            {
                comText = "insert into QuanX(Role,QuanX) values ('"+Role+"','"+List[n]+"')";
                DataOperation.ExecSql(comText);
            }
            MessageBox.Show("保存成功!","提示");
            //重新绑定数据
            DataTable table = DataOperation.GetDataTable("select distinct Role from QuanX");
            this.RoletreeView.Nodes[0].Nodes.Clear();
            for (int n = 0; n < table.Rows.Count; n++)
            {
                this.RoletreeView.Nodes[0].Nodes.Add(table.Rows[n][0].ToString());
            }
            this.RoletreeView.ExpandAll();
        }

        private void RoletreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            //给角色赋权
            Common.AccessDataOperation Data=new HHLInfoManage.Common.AccessDataOperation();
            DataTable table = Data.GetDataTable("select QuanX from QuanX where Role='" + this.RoletreeView.SelectedNode.Text + "'");
            foreach (TreeNode Node1 in this.QuanXtreeView.Nodes[0].Nodes)
            {
                Node1.Checked = false;
                foreach (TreeNode Node2 in Node1.Nodes)
                {

                    Node2.Checked = false;
                }
            }
            for (int n = 0; n < table.Rows.Count; n++)
            {
                foreach (TreeNode Node1 in this.QuanXtreeView.Nodes[0].Nodes)
                {
                    if (table.Rows[n][0].Equals(Node1.Tag))
                    {
                        Node1.Checked = true;
                    }
                    foreach (TreeNode Node2 in Node1.Nodes)
                    {
                        if (table.Rows[n][0].Equals(Node2.Tag))
                        {
                            Node2.Checked = true;
                        }
                    }
                }
            }
        }
    }
}

调用:
  //进行权限设置
        public  void SetQuanX()
        {
            ToolStripMenuItem[] items = new ToolStripMenuItem[]
            {
               mnuMemberMamang,mnuMemberRegister,mnuMemberRevise,mnuMemberSelect,mnuMemberReviseNext,mnuMemberLogout,mnuSelectRoster,
                mnuCourse,mnuCoursePlan,mnuCourseChoice,mnuCourseAdjust,mnuCheckIn,
                mnuPrint,mnuMemberInfoPrint,mnuCheckInPrint,mnuRosterPrint,
                mnuUserManage,mnuAddUser,mnuReviseUser,mnuChangeUser,mnuLog,QuanX
            };
            Common.AccessDataOperation Data=new HHLInfoManage.Common.AccessDataOperation();
            DataTable table = Data.GetDataTable("select QuanX from QuanX where Role='" + frmLogin.str_UserRights + "'");
            for (int n = 0; n < items.Length; n++)
            {
                items[n].Visible = false;
            }
            for (int n = 0; n < table.Rows.Count; n++)
            {
                for (int p = 0; p < items.Length; p++)
                {
                    if (items[p].Name.Equals(table.Rows[n][0].ToString()))
                    {
                        items[p].Visible = true;
                    }
                }
            }
        }