基本信息
源码名称:C# winform 权限管理系统完整源码下载(含数据库)
源码大小:12.63M
文件格式:.rar
开发语言:C#
更新时间:2014-01-24
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using IBLL = CodingMouse.CMCSharpSDK.IBLL; using BLLFactory = CodingMouse.CMCSharpSDK.BLLFactory; using Model = CodingMouse.CMCSharpSDK.Model; using Common = CodingMouse.CMCSharpSDK.UI.Common; namespace CodingMouse.CMCSharpSDK.UI.Forms { /// <summary> /// 权限管理界面 /// </summary> public partial class frmRightsManager : Form { #region Private Members MenuStrip _msMain = null; /// <summary> /// 主界面被管理的菜单对象 /// </summary> internal MenuStrip MsMain { get { return _msMain; } set { _msMain = value; } } frmMain _frmMain = null; /// <summary> /// 主界面对象 /// </summary> public frmMain FrmMain { get { return _frmMain; } set { _frmMain = value; } } /// <summary> /// 权限菜单界面管理类对象 /// </summary> Common.RightsMenuUIManager _rmuManager = null; /// <summary> /// 权限菜单数据管理类对象 /// </summary> Common.RightsMenuDataManager _rmdManager = null; Model.Operator _currentOperator = null; /// <summary> /// 保存当前登录的操作员对象 /// </summary> internal Model.Operator CurrentOperator { get { return _currentOperator; } set { _currentOperator = value; } } Dictionary<string, Model.Operator> _operatorCollection = null; /// <summary> /// 当前加载的所有操作员实体集合 /// </summary> internal Dictionary<string, Model.Operator> OperatorCollection { get { return _operatorCollection; } set { _operatorCollection = value; } } bool _isRelatingChooseCells = true; /// <summary> /// 是否启用数据视图关联选择 /// </summary> internal bool IsRelatingChooseCells { get { return _isRelatingChooseCells; } set { _isRelatingChooseCells = value; } } /// <summary> /// 是否启用树视图子节点关联选择 /// </summary> bool _isCheckedChildTreeNode = true; /// <summary> /// 保存上一次被选中的操作员列表行 /// </summary> DataGridViewRow _dgvOldSelectedRow = null; /// <summary> /// 权限视图可勾选状态 /// </summary> bool _rightsViewIsChecked = false; #endregion #region Public Methods /// <summary> /// 带参构造 /// </summary> /// <param name="msMain">主界面待管理的菜单对象</param> /// <param name="frmMain">主界面对象</param> /// <param name="currentOperator">当前登录操作员对象</param> public frmRightsManager(MenuStrip msMain, frmMain frmMain, Model.Operator currentOperator) { // 构建设计器控件 InitializeComponent(); // 保存菜单对象 MsMain = msMain; // 保存主界面对象 FrmMain = frmMain; // 保存当前登录操作员对象 CurrentOperator = currentOperator; // 创建权限菜单界面管理类实例 _rmuManager = new Common.RightsMenuUIManager(); // 赋予要操作的对象 _rmuManager.DgvOperatorList = this.dgvOperatorList; _rmuManager.DgvRightsList = this.dgvRightsList; _rmuManager.TvRightsView = this.tvRightsView; _rmuManager.MsMain = _msMain; _rmuManager.RightsManagerUI = this; // 创建权限菜单数据管理类实例 _rmdManager = new Common.RightsMenuDataManager(); } #endregion #region Event Handlers /// <summary> /// 窗体初始化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void frmRightsManager_Load(object sender, EventArgs e) { // 加载操作员列表 _rmuManager.LoadOperatorList(); // 默认为分组模式 tsbtnRightsMode.Text = tsmiGroupMode.Text; } /// <summary> /// 树形视图右键菜单公共点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmiTreeViewContentMenuItem_Click(object sender, EventArgs e) { // 保存当前菜单项激发者 ToolStripMenuItem menuItem = sender as ToolStripMenuItem; // 勾选所有结点上的复选框 if (menuItem == tsmiSelectAll) { foreach (TreeNode treeNode in this.tvRightsView.Nodes) { treeNode.Checked = true; // 禁用树视图重绘 tvRightsView.BeginUpdate(); // 选中/取消树节点及其子节点勾选状态 _rmuManager.CheckOrUnCheckTreeNode(treeNode); // 启用树视图重绘 tvRightsView.EndUpdate(); } } // 取消所有结点上的复选 if (menuItem == tsmiCancelAll) { foreach (TreeNode treeNode in this.tvRightsView.Nodes) { treeNode.Checked = false; // 禁用树视图重绘 tvRightsView.BeginUpdate(); // 选中/取消树节点及其子节点勾选状态 _rmuManager.CheckOrUnCheckTreeNode(treeNode); // 启用树视图重绘 tvRightsView.EndUpdate(); } } // 重新加载账户权限结构树 if (menuItem == tsmiReload) { // 如果有选中行 if (dgvOperatorList.SelectedCells.Count > 0) { // 保存当前选中行的操作员名称 string operatorName = _dgvOldSelectedRow.Cells["ModelName"].Value.ToString().Trim(); // 指定当前编辑的操作员对象 Model.Operator editOperator = _operatorCollection[operatorName]; // 将数据绑定加载到树形视图 _rmuManager.BindDataToTreeView(editOperator.RightsCollection); } } // 将 TreeView 树结点全部展开 if (menuItem == tsmiExpandAll) { this.tvRightsView.ExpandAll(); } // 将 TreeView 树结点全部折叠 if (menuItem == tsmiCollapseAll) { this.tvRightsView.CollapseAll(); } } /// <summary> /// [保存更改]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnSaveAllChanged_Click(object sender, EventArgs e) { // 提交并结束数据视图的单元格编辑 dgvRightsList.EndEdit(); dgvOperatorList.EndEdit(); // 如果有选中单元格 if (dgvOperatorList.SelectedCells.Count > 0) { try { // 创建业务逻辑层工厂类实例 BLLFactory.BLLFactory bllFactory = new BLLFactory.BLLFactory(); // 调用工厂类实例方法创建操作员管理类实例 IBLL.IOperatorManager operatorManager = bllFactory.BuildOperatorManager(); // 保存所有操作员权限信息 foreach (Model.Operator tmpOperator in _operatorCollection.Values) { // 保存当前操作员所做的修改 operatorManager.ModifyOperator(tmpOperator); } // 给出用户操作提示 MessageBox.Show( "权限设置保存成功!", "保存提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show( ex.Message, "保存失败", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } /// <summary> /// [刷新权限]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnRefreshRightsList_Click(object sender, EventArgs e) { // 如果是非超级管理员 if (_currentOperator.Id != 0) { // 将数据绑定显示到数据视图 _rmuManager.BindDataToDataGridView(_currentOperator.RightsCollection); // 将数据绑定加载到树形视图 _rmuManager.BindDataToTreeView(_currentOperator.RightsCollection); } } /// <summary> /// [刷新用户]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnRefreshOperator_Click(object sender, EventArgs e) { // 将数据绑定显示到数据视图 _rmuManager.BindOperatorInfoToDataGridView(_operatorCollection); } /// <summary> /// [关闭窗口]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnCloseWindow_Click(object sender, EventArgs e) { this.Close(); } /// <summary> /// 权限列表数据视图单元格启动编辑模式事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvRightsList_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { // 如果是权限状态列且节点不可选则取消勾选事件 if (dgvRightsList.Columns[e.ColumnIndex].Name == "RightsState" && !_rightsViewIsChecked) e.Cancel = true; } /// <summary> /// 权限列表数据视图单元格停止编辑模式事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvRightsList_CellEndEdit(object sender, DataGridViewCellEventArgs e) { // 如果包含操作员信息 if (dgvOperatorList.SelectedCells.Count > 0) { // 保存当前选中行的操作员名称 string operatorName = dgvOperatorList.Rows[dgvOperatorList.SelectedCells[0].RowIndex].Cells["ModelName"].Value.ToString().Trim(); // 指定当前编辑的操作员对象 Model.Operator editOperator = _operatorCollection[operatorName]; // 找到当前编辑的权限项 Model.Rights currentEditRights = editOperator.RightsCollection[dgvRightsList.Rows[e.RowIndex].Cells["ModelName"].Value.ToString().Trim()]; // 保存当前修改的权限标题和权限状态到权限集合 currentEditRights.RightsCaption = Convert.ToString(dgvRightsList.Rows[e.RowIndex].Cells["RightsCaption"].Value); currentEditRights.RightsState = Convert.ToBoolean(dgvRightsList.Rows[e.RowIndex].Cells["RightsState"].Value); // 将数据绑定加载到树形视图 _rmuManager.BindDataToTreeView(editOperator.RightsCollection); } } /// <summary> /// 操作员列表数据视图单元格停止编辑模式事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvOperatorList_CellEndEdit(object sender, DataGridViewCellEventArgs e) { // 如果包含操作员信息 if (dgvOperatorList.SelectedCells.Count > 0) { // 找到当前编辑的操作员项 Model.Operator currentEidtOperator = _operatorCollection[dgvOperatorList.Rows[e.RowIndex].Cells["ModelName"].Value.ToString().Trim()]; // 保存当前修改的操作员密码和状态到操作员集合 currentEidtOperator.Password = Convert.ToString(dgvOperatorList.Rows[e.RowIndex].Cells["Password"].Value); currentEidtOperator.State = Convert.ToBoolean(dgvOperatorList.Rows[e.RowIndex].Cells["State"].Value); } } /// <summary> /// 权限列表数据视图所选内容更改事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvRightsList_SelectionChanged(object sender, EventArgs e) { // 仅在有选中单元格且启用关联选择时才执行操作 if (dgvRightsList.SelectedCells.Count > 0 && IsRelatingChooseCells) { // 遍历所有选中单元格选中所有同级权限项及父项 for (int i = 0; i < dgvRightsList.SelectedCells.Count; i ) { // 且仅在选中[内部名称]和[父级权限]单元格时才执行操作 if (dgvRightsList.SelectedCells[i].OwningColumn.Name == "ModelName" || dgvRightsList.SelectedCells[i].OwningColumn.Name == "ParentLevelRightsName") { // 同时选中与选中单元格内容相同的所有[内部名称]和[父级权限]单元格 foreach (DataGridViewRow dgvRow in this.dgvRightsList.Rows) { if (dgvRow.Cells["ModelName"].Value == dgvRightsList.SelectedCells[i].Value) dgvRow.Cells["ModelName"].Selected = true; else if (dgvRow.Cells["ParentLevelRightsName"].Value == dgvRightsList.SelectedCells[i].Value) dgvRow.Cells["ParentLevelRightsName"].Selected = true; } } } } } /// <summary> /// 操作员列表数据视图所选内容更改事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvOperatorList_SelectionChanged(object sender, EventArgs e) { if (dgvOperatorList.SelectedCells.Count > 0 && dgvOperatorList.Rows[dgvOperatorList.SelectedCells[0].RowIndex] != _dgvOldSelectedRow) { // 保存当前选中的行 _dgvOldSelectedRow = dgvOperatorList.Rows[dgvOperatorList.SelectedCells[0].RowIndex]; // 保存当前选中行的操作员名称 string operatorName = _dgvOldSelectedRow.Cells["ModelName"].Value.ToString().Trim(); // 指定当前编辑的操作员对象 Model.Operator editOperator = _operatorCollection[operatorName]; // 将数据绑定显示到数据视图 _rmuManager.BindDataToDataGridView(editOperator.RightsCollection); // 将数据绑定加载到树形视图 _rmuManager.BindDataToTreeView(editOperator.RightsCollection); } } /// <summary> /// [权限视图]节点复选前事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRightsView_BeforeCheck(object sender, TreeViewCancelEventArgs e) { // 如果节点不可选则取消勾选事件 if (!_rightsViewIsChecked) e.Cancel = true; } /// <summary> /// 权限树形视图复选框状态更改事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRightsView_AfterCheck(object sender, TreeViewEventArgs e) { // 如果已经启用子节点关联选择 if (_isCheckedChildTreeNode) { // 禁用树视图重绘 tvRightsView.BeginUpdate(); // 禁用子节点关联选择 _isCheckedChildTreeNode = false; // 选中/取消树节点及其子节点勾选状态 _rmuManager.CheckOrUnCheckTreeNode(e.Node); // 启用子节点关联选择 _isCheckedChildTreeNode = true; // 启用树视图重绘 tvRightsView.EndUpdate(); if (dgvOperatorList.SelectedCells.Count > 0) { // 保存当前选中行的操作员名称 string operatorName = dgvOperatorList.Rows[dgvOperatorList.SelectedCells[0].RowIndex].Cells["ModelName"].Value.ToString().Trim(); // 将数据绑定显示到数据视图 _rmuManager.BindDataToDataGridView(_operatorCollection[operatorName].RightsCollection); } } } /// <summary> /// 权限树形视图选定内容更改事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRightsView_AfterSelect(object sender, TreeViewEventArgs e) { // 禁用关联选择 _isRelatingChooseCells = false; // 清除所有单元格选择 dgvRightsList.ClearSelection(); // 启用关联选择 _isRelatingChooseCells = true; // 同步数据视图对应项选择 foreach (DataGridViewRow dgvRow in this.dgvRightsList.Rows) { if (dgvRow.Cells["ModelName"].Value.ToString().Trim() == e.Node.Tag.ToString().Trim()) dgvRow.Cells["ModelName"].Selected = true; } } /// <summary> /// 用户编辑权限树形视图节点文本后事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRightsView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { // 保存当前选中行的操作员名称 string operatorName = dgvOperatorList.Rows[dgvOperatorList.SelectedCells[0].RowIndex].Cells["ModelName"].Value.ToString().Trim(); // 同步修改权限集合 _operatorCollection[operatorName].RightsCollection[e.Node.Tag.ToString()].RightsCaption = e.Label; // 将数据绑定显示到数据视图 _rmuManager.BindDataToDataGridView(_operatorCollection[operatorName].RightsCollection); } /// <summary> /// 窗体指定关闭原因后且已关闭事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void frmRightsManager_FormClosed(object sender, FormClosedEventArgs e) { // 重新加载权限菜单 _rmdManager.LoadMenuRightsItem(_msMain, _currentOperator.RightsCollection); } /// <summary> /// [添加用户]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnAddOperator_Click(object sender, EventArgs e) { frmOperatorManager frmAddOperator = new frmOperatorManager(_currentOperator, _msMain, false); frmAddOperator.ShowInTaskbar = false; frmAddOperator.ShowDialog(); // 重新加载操作员列表 _rmuManager.LoadOperatorList(); // 选中最末项并使其滚动保持可见 if (dgvOperatorList.Rows.Count > 0) { dgvOperatorList.Rows[dgvOperatorList.Rows.Count - 1].Selected = true; dgvOperatorList.FirstDisplayedScrollingRowIndex = dgvOperatorList.Rows.Count - 1; } } /// <summary> /// [删除用户]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnDeleteOperator_Click(object sender, EventArgs e) { // 如果有选中单元格 if (dgvOperatorList.SelectedCells.Count > 0) { try { // 获取当前要删除的操作员 ID int operatorId = Convert.ToInt32(dgvOperatorList.SelectedCells[0].OwningRow.Cells["Id"].Value); // 获取当前要删除的操作员名称 string operatorName = Convert.ToString(dgvOperatorList.SelectedCells[0].OwningRow.Cells["ModelName"].Value); DialogResult result; result = MessageBox.Show( string.Format("确实要删除操作员 [{0}] 的所有(包括权限关系)信息吗?", operatorName), "删除提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result == DialogResult.Cancel) return; // 创建工厂类 BLLFactory.BLLFactory bllFactory = new BLLFactory.BLLFactory(); // 删除权限关系信息 IBLL.IRightsRelationManager rightsRelationManager = bllFactory.BuildRightsRelationManager(); if (rightsRelationManager.GetRightsRelationByOperatorId(operatorId).Count > 0) { if (!rightsRelationManager.DeleteRightsRelationByOperatorId(operatorId)) { MessageBox.Show( string.Format("未能删除操作员 [{0}] 的权限关系信息!", operatorName), "删除失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } // 删除操作员信息 IBLL.IOperatorManager operatorManager = bllFactory.BuildOperatorManager(); if (!operatorManager.DeleteOperatorByID(operatorId)) { MessageBox.Show( string.Format("未能删除操作员 [{0}] 的基本信息!", operatorName), "删除失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 重新加载操作员列表 _rmuManager.LoadOperatorList(); } catch (Exception ex) { MessageBox.Show( ex.Message, "删除失败", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // 如果操作员信息数量为零 if (_operatorCollection.Count == 0) { // 清空权限列表、操作员列表和权限视图 dgvOperatorList.Rows.Clear(); dgvRightsList.Rows.Clear(); tvRightsView.Nodes.Clear(); } } /// <summary> /// [分组管理]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnRightsGroupManager_Click(object sender, EventArgs e) { frmRightsGroupManager frmRightsGroupManager = new frmRightsGroupManager(this, this.FrmMain); frmRightsGroupManager.ShowInTaskbar = false; frmRightsGroupManager.ShowDialog(); // 加载操作员列表 _rmuManager.LoadOperatorList(); // 刷新数据显示到数据视图 _rmuManager.BindOperatorInfoToDataGridView(_operatorCollection); } /// <summary> /// [权限列表]单元格验证事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvRightsList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (dgvRightsList.Columns[e.ColumnIndex].Name == "RightsCaption") { if (e.FormattedValue.ToString().Trim() == String.Empty) { dgvRightsList.Rows[e.RowIndex].ErrorText = "权限标题不允许为空字符(空格)!"; MessageBox.Show( dgvRightsList.Rows[e.RowIndex].ErrorText, "编辑提示", MessageBoxButtons.OK, MessageBoxIcon.Error); e.Cancel = true; } } } /// <summary> /// [操作员列表]单元格验证事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvOperatorList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (dgvOperatorList.Columns[e.ColumnIndex].Name == "Password") { if (e.FormattedValue.ToString().Trim().Length < 6) { dgvOperatorList.Rows[e.RowIndex].ErrorText = "用户密码长度不能小于六位!"; MessageBox.Show( dgvOperatorList.Rows[e.RowIndex].ErrorText, "编辑提示", MessageBoxButtons.OK, MessageBoxIcon.Error); e.Cancel = true; } } } /// <summary> /// [分组模式]/[用户模式]工具栏下拉菜单项点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmiRightsMode_Click(object sender, EventArgs e) { // 勾选点击菜单项 (sender as ToolStripMenuItem).Checked = true; // 提交并结束对当前单元格的编辑 dgvRightsList.EndEdit(); if ((sender as ToolStripMenuItem).Name == tsmiGroupMode.Name) { tsmiOperatorMode.Checked = false; _rightsViewIsChecked = false; tsbtnRightsGroupManager.Visible = true; tsbtnRightsMode.Text = tsmiGroupMode.Text; tvRightsView.ContextMenuStrip = null; } if ((sender as ToolStripMenuItem).Name == tsmiOperatorMode.Name) { tsmiGroupMode.Checked = false; _rightsViewIsChecked = true; tsbtnRightsGroupManager.Visible = false; tsbtnRightsMode.Text = tsmiOperatorMode.Text; tvRightsView.ContextMenuStrip = this.cmsRightsTreeView; } } /// <summary> /// [权限模式]工具栏按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsbtnRightsMode_ButtonClick(object sender, EventArgs e) { // 下拉弹出菜单选项 tsbtnRightsMode.ShowDropDown(); } #endregion } }