using DevExpress.XtraTreeList.Columns; using DevExpress.XtraTreeList.Data; using DevExpress.XtraTreeList.Nodes; using ProjectBase.Data.BaseDAL; using ProjectBase.Data.Logs; using SIMDP.BLL; using SIMDP.Model; using ProjectBase.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SIMDP.View { public partial class FormAuthoryRole : DevExpress.XtraEditors.XtraForm { //private BlAuthoryGroup blGroup = new BlAuthoryGroup(); private string selectTreeNode = ""; // 选中节点 private int treeLevel = 0; // 树形结构的层级 private int nodeType = 0; // 选中节点类型,0,代表组织,1,代表角色 public FormAuthoryRole() { InitializeComponent(); } private void FormAuthoryRole_Load(object sender, EventArgs e) { InitTree(); InitGrid(); } /// /// 初始化树 /// private void InitTree() { this.treeViewRole.BeginUpdate(); this.treeViewRole.Nodes.Clear(); this.treeViewRole.ImageList = this.imageList1; string condition = string.Format(" parent_group_id =''"); List list = BLLFactory.Instance.Find(condition); List rootList = new List(); foreach (MoAuthoryGroup item in list) { rootList.Add(item); treeLevel = 1; } foreach (MoAuthoryGroup root in rootList) { if (root != null) { TreeNode rootNode = new TreeNode(); //根节点 rootNode.Text = root.GroupName; rootNode.Name = root.GroupId; rootNode.ImageIndex = 0; rootNode.SelectedImageIndex = 0; AddChildRole(rootNode); if (root.GroupId.Substring(0, 1).Equals("1")) { List subList = BLLFactory.Instance.Find(string.Format(" parent_group_id = '{0}'", root.GroupId)); AddChildNode(subList, rootNode); treeLevel = 2; } this.treeViewRole.Nodes.Add(rootNode); } } this.treeViewRole.ExpandAll(); this.treeViewRole.EndUpdate(); } /// /// 添加公司级子节点 /// /// /// private void AddChildNode(List list, TreeNode parentNode) { if (list == null) { return; } foreach (MoAuthoryGroup item in list) { TreeNode node = new TreeNode(); //公司级子节点 node.Text = item.GroupName; node.Name = item.GroupId; node.ImageIndex = 1; node.SelectedImageIndex = 1; parentNode.Nodes.Add(node); AddChildRole(node); } } /// /// 添加角色节点 /// /// private void AddChildRole(TreeNode parentNode) { string sql =" role_id in (SELECT b.role_id from group_role b where b.group_id = '" + parentNode.Name + "')"; //BlAuthoryRole blRole = new BlAuthoryRole(); List roleList = new List(); roleList = BLLFactory.Instance.Find(sql); foreach (MoAuthoryRole item in roleList) { TreeNode node = new TreeNode(); node.Text = item.RoleName; node.Name = item.RoleId; node.ImageIndex = 2; node.SelectedImageIndex = 2; parentNode.Nodes.Add(node); } } /// /// 初始化表格控件 /// private void InitGrid() { //entity this.winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged); this.winGridViewPager1.OnStartExport += new EventHandler(winGridViewPager1_OnStartExport); this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected); this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnAddNew); this.winGridViewPager1.OnDeleteSelected += new EventHandler(winGridViewPager1_OnDeleteSelected); this.winGridViewPager1.OnRefresh += new EventHandler(winGridViewPager1_OnRefresh); this.winGridViewPager1.gridView1.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(winGridViewPager1_OnSelect); //this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1; this.winGridViewPager1.ShowLineNumber = true; this.winGridViewPager1.BestFitColumnWith = true; this.winGridViewPager1.DisplayColumns = "RoleId,RoleName,RoleTime,RoleDescription"; #region 添加别名解析 this.winGridViewPager1.AddColumnAlias("RoleId", "角色编码"); this.winGridViewPager1.AddColumnAlias("RoleName", "角色名称"); this.winGridViewPager1.AddColumnAlias("RoleTime", "角色生成时间"); this.winGridViewPager1.AddColumnAlias("RoleDescription", "角色描述"); #endregion this.winGridViewPager1.PrintTitle = "角色信息报表"; this.winGridViewPager1.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; for (int i = 0; i < this.winGridViewPager1.gridView1.Columns.Count; i++) //设置每列内容居中显示 { this.winGridViewPager1.gridView1.Columns[i].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; } } /// /// 绑定数据 /// /// 组编码 private void BindData(string condition, int nodeType) { try { //BlAuthoryRole blRole = new BlAuthoryRole(); if (!string.IsNullOrEmpty(condition)) { string sql = ""; if (nodeType == 0) { sql = " role_id in (SELECT b.role_id from group_role b where b.group_id = '" + condition + "')"; } else { sql = " role_id = '" + condition + "'"; } this.winGridViewPager1.DataSource = BLLFactory.Instance.FindWithPager(sql, this.winGridViewPager1.PagerInfo); } } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("查询角色信息失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("查询角色信息失败,失败原因为:{0}", ex)); } } /// /// 选中事件 /// /// /// private void winGridViewPager1_OnSelect(object sender, EventArgs e) { MoAuthoryRole selectRow = this.winGridViewPager1.gridView1.GetFocusedRow() as MoAuthoryRole; InitTreeList(); //BlRoleRight blRole = new BlRoleRight(); List roleRightList = BLLFactory.Instance.FindByIDs(selectRow.RoleId); foreach (TreeListNode node in this.treeListRight.Nodes) { SetTreeListChecked(node, roleRightList); } } private void SetTreeListChecked(TreeListNode parentNode, List roleRightList) { MoAuthoryRight data = this.treeListRight.GetDataRecordByNode(parentNode) as MoAuthoryRight; for (int i = 0; i < roleRightList.Count; i++) { if (roleRightList[i].RightId == data.RightId) parentNode.Checked = true; } if (parentNode.Nodes.Count == 0) return; foreach (TreeListNode node in parentNode.Nodes) { SetTreeListChecked(node, roleRightList); } } private void InitTreeList() { #region 添加别名解析 Dictionary columnNameAlias = new Dictionary();//Treelist中字段别名字典集合 this.treeListRight.Columns.Clear(); columnNameAlias.Clear(); //columnNameAlias.Add("Check", "选中状态"); columnNameAlias.Add("RightName", "权限名称"); foreach (var item in columnNameAlias) { TreeListColumn col = new TreeListColumn(); col.Caption = item.Value; col.FieldName = item.Key; col.Visible = true; col.Name = item.Key; this.treeListRight.Columns.Add(col); } this.treeListRight.KeyFieldName = "RightId"; this.treeListRight.ParentFieldName = "ParentRightId"; this.treeListRight.LookAndFeel.UseDefaultLookAndFeel = false; // 设置“+” ,“-” this.treeListRight.LookAndFeel.UseWindowsXPTheme = true; #endregion List rightList = new List(); //BlAuthoryRight bl = new BlAuthoryRight(); rightList = BLLFactory.Instance.GetAll(); this.treeListRight.DataSource = rightList; this.treeListRight.RefreshDataSource(); } /// /// 添加列序号 /// /// /// private void treeListRight_CustomDrawNodeIndicator(object sender, DevExpress.XtraTreeList.CustomDrawNodeIndicatorEventArgs e) { DevExpress.XtraTreeList.TreeList tmpTree = sender as DevExpress.XtraTreeList.TreeList; DevExpress.Utils.Drawing.IndicatorObjectInfoArgs args = e.ObjectArgs as DevExpress.Utils.Drawing.IndicatorObjectInfoArgs; if (args != null) { int rowNum = tmpTree.GetVisibleIndexByNode(e.Node) + 1; this.treeListRight.IndicatorWidth = 30; args.DisplayText = rowNum.ToString(); } } /// /// 分页控件翻页的操作 /// private void winGridViewPager1_OnPageChanged(object sender, EventArgs e) { BindData(selectTreeNode, nodeType); } /// /// 分页控件全部导出操作前的操作 /// private void winGridViewPager1_OnStartExport(object sender, EventArgs e) { //this.winGridViewPager1.AllToExport = blMenu.Find(condition); } /// /// 分页控件编辑项操作 /// private void winGridViewPager1_OnEditSelected(object sender, EventArgs e) { MoAuthoryRole selectRow = this.winGridViewPager1.gridView1.GetFocusedRow() as MoAuthoryRole; if (selectRow == null) { DevExpress.XtraEditors.XtraMessageBox.Show("请选择一行数据!"); return; } FormEditAuthoryRole editAuthoryRole = new FormEditAuthoryRole(selectRow); editAuthoryRole.StartPosition = FormStartPosition.CenterScreen; editAuthoryRole.ShowDialog(); BindData(selectTreeNode, nodeType); InitTree(); //BlRoleRight blRole = new BlRoleRight(); List roleRightList = BLLFactory.Instance.FindByIDs(selectRow.RoleId); foreach (TreeListNode node in this.treeListRight.Nodes) { SetTreeListChecked(node, roleRightList); } } ///// ///// 分页控件新增操作 ///// private void winGridViewPager1_OnAddNew(object sender, EventArgs e) { FormEditAuthoryRole editAuthoryRole = new FormEditAuthoryRole(null); editAuthoryRole.StartPosition = FormStartPosition.CenterScreen; editAuthoryRole.ShowDialog(); InitTree(); InitTreeList(); BindData(selectTreeNode, nodeType); } /// /// 分页控件删除操作 /// /// /// private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e) { bool bOK = false; DbTransaction trans = null; try { if (DevExpress.XtraEditors.XtraMessageBox.Show("您确定删除选定的记录么?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } MoAuthoryRole selectRow = this.winGridViewPager1.gridView1.GetFocusedRow() as MoAuthoryRole; trans = BLLFactory.Instance.CreateTransaction(); //BlAuthoryRole blRole = new BlAuthoryRole(); bOK = BLLFactory.Instance.Delete(selectRow.RoleId, SysEnvironment.CurrentLoginID, trans); //BlRoleRight blRight = new BlRoleRight(); if (bOK) { bOK = BLLFactory.Instance.Delete(selectRow.RoleId, SysEnvironment.CurrentLoginID, trans); } //BlGroupRole blGroupRole = new BlGroupRole(); if (bOK) { string condition = string.Format(" role_id = '{0}'", selectRow.RoleId); bOK = BLLFactory.Instance.DeleteByCondition(condition, trans); } if (!bOK) { trans.Rollback(); DevExpress.XtraEditors.XtraMessageBox.Show("删除角色信息失败!"); } else { trans.Commit(); DevExpress.XtraEditors.XtraMessageBox.Show("删除角色信息成功!"); InitTree(); InitTreeList(); BindData(selectTreeNode, nodeType); } } catch (Exception ex) { trans.Rollback(); DevExpress.XtraEditors.XtraMessageBox.Show("删除失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("删除数据库角色关联数据出现错误:{0}", ex)); } finally { trans.Dispose(); BindData(selectTreeNode, nodeType); } } /// /// 分页控件刷新操作 /// private void winGridViewPager1_OnRefresh(object sender, EventArgs e) { BindData(selectTreeNode, nodeType); } /// /// 选中节点响应事件 /// /// /// private void TreeNode_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node.Level == 0) { if (treeLevel == 2) return; else { selectTreeNode = e.Node.Name; nodeType = 0; BindData(selectTreeNode, nodeType); } } else if (e.Node.Level == 1) { if (treeLevel == 2) { selectTreeNode = e.Node.Name; nodeType = 0; BindData(selectTreeNode, nodeType); } else { selectTreeNode = e.Node.Name; nodeType = 1; BindData(selectTreeNode, nodeType); } } else { selectTreeNode = e.Node.Name; nodeType = 1; BindData(selectTreeNode, nodeType); } } private void menu_Add_Click(object sender, EventArgs e) { winGridViewPager1_OnAddNew(sender, e); } private void menu_Expand_Click(object sender, EventArgs e) { this.treeViewRole.ExpandAll(); } private void menu_Collapse_Click(object sender, EventArgs e) { this.treeViewRole.CollapseAll(); } private void menu_Refresh_Click(object sender, EventArgs e) { InitTree(); } } }