using DevExpress.XtraGrid.Views.Grid; using Lskj.Business.Impl; using Lskj.Control; using Lskj.Control.Model; using Lskj.Core; using Lskj.Model; using Lskj.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lskj.PubUserTomodule { public partial class FrmRightMenus : BaseForm { /// /// 角色表 /// /// The parent value. public DataTable RoleTable { get { return this.RoleControlEx.gridControl.DataSource as DataTable; } set { this.RoleControlEx.gridControl.DataSource = value; } } /// ///人员表 /// /// The parent value. public DataTable PersonnelTable { get { return this.PeopleControlEx.gridControl.DataSource as DataTable; } set { this.PeopleControlEx.gridControl.DataSource = value; } } /// /// 主表sql后缀条件(不同地方的右键条件不一样) /// public ModuleType Type; /// /// /// public string ModuleCode; public FrmRightMenus(ModuleType type,string moduleCode) { InitializeComponent(); this.Type = type; this.ModuleCode = moduleCode; //绑定列数据 InitializeColumns(); //绑定事件 InitializeEvent(); //加载主表数据源 InitializeDataSource(); InitSpliterPosition(); this.splitMain.SplitterPositionChanged += SplitMain_SplitterPositionChanged; } /// /// 主表数据源 /// private void InitializeDataSource() { this.RightMenusControlEx.gridControl.DataSource = PowerImpl.GetRightMenus(ModuleCode, Type); this.RightMenusControlEx.GridView.BestFitColumns();//设置根据内容填充列宽 this.RightGridView_Click(RightMenusControlEx.GridView, null); } /// /// 说明:初始化分割条位置 /// 创建人:龚宇超 /// 创建日期:2017-12-15 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSpliterPosition() { string spliterPosition = IniHelper.Read(string.Format("FrmPermissionClassification__splitMain{0}", "FrmRightMenus")); if (!string.IsNullOrEmpty(spliterPosition)) this.splitMain.SplitterPosition = Convert.ToInt32(spliterPosition); } /// /// 分割条改变时 /// /// /// private void SplitMain_SplitterPositionChanged(object sender, EventArgs e) { IniHelper.Write(string.Format("FrmPermissionClassification__splitMain{0}", "FrmRightMenus"), this.splitMain.SplitterPosition + ""); } /// /// 默认绑定列数据 /// private void InitializeColumns() { //添加表格列 this.RightMenusControlEx.GridView.Columns.AddVisible("menuname","菜单名称"); this.RightMenusControlEx.GridView.Columns.AddVisible("privilegeOper","权限" ); this.PeopleControlEx.GridView.Columns.AddVisible("员工ID", "员工ID"); this.PeopleControlEx.GridView.Columns.AddVisible("员工工号", "员工工号"); this.PeopleControlEx.GridView.Columns.AddVisible("员工姓名", "员工姓名"); this.PeopleControlEx.GridView.Columns.AddVisible("所属部门", "所属部门"); this.RoleControlEx.GridView.Columns.AddVisible("roleName", "角色"); this.PeopleControlEx.GridView.OptionsBehavior.Editable = false; this.RoleControlEx.GridView.OptionsBehavior.Editable = false; this.RightMenusControlEx.GridView.OptionsBehavior.Editable = false; } /// /// 默认绑定事件 /// private void InitializeEvent() { //角色,人员拖拽到人员文本框 //角色 GridDragMemo dragMemo = new GridDragMemo(this.RoleControlEx.GridView, this.textPersonnelList); dragMemo.OnDragComplete += DragMemo_OnDragComplete; //人员 GridDragMemo dragMemo2 = new GridDragMemo(this.PeopleControlEx.GridView, this.textPersonnelList); dragMemo2.OnDragComplete += DragMemo_OnDragComplete; //主表单击加载下方文本框 this.RightMenusControlEx.GridView.Click += RightGridView_Click; //文本框改变时刷新表中数据 this.textPersonnelList.TextChanged += TextPersonnelList_TextChanged; } /// /// 角色或人员拖拽到文本 /// /// /// private void DragMemo_OnDragComplete(object sender, GridDragMemoArgs e) { try { if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return; string userNames = string.Empty; List texts = textPersonnelList.Text.Split(',').ToList(); int index = this.xtraTabControl2.SelectedTabPageIndex;//0为角色,1为人员 if (index == 1) { //人员 foreach (DataRow item in e.GridViewSelectRows) { if (!texts.Contains(item["员工姓名"] + "")) { userNames += item["员工姓名"] + ","; texts.Add(item["员工姓名"] + ""); } } } else { //角色 foreach (DataRow item in e.GridViewSelectRows) { string id = item["id"] + ""; DataTable Roledetailed = PowerImpl.GetWorkUsers(id); if (Roledetailed != null && Roledetailed.Rows.Count > 0) { foreach (DataRow dr in Roledetailed.Rows) { if (!texts.Contains(dr["员工姓名"] + "")) { userNames += dr["员工姓名"] + ","; texts.Add(dr["员工姓名"] + ""); } } } } } textPersonnelList.Text += userNames; } catch (Exception ex) { } } /// /// 选中权限分类中的行,在下方文本框中显示选中行人员 /// /// /// private void RightGridView_Click(object sender, EventArgs e) { GridView gridView = sender as GridView; DataRow rowItem = gridView.GetFocusedDataRow(); if (rowItem != null) { textPersonnelList.Text = rowItem["privilegeOper"] + ""; } else { textPersonnelList.Text = ""; } } /// /// 文本框的值改变时,改变选中行的值 /// /// /// private void TextPersonnelList_TextChanged(object sender, EventArgs e) { try { DataRow rowItem = this.RightMenusControlEx.GridView.GetFocusedDataRow(); if (rowItem != null) { rowItem["privilegeOper"] = textPersonnelList.Text; } else { textPersonnelList.Text = ""; } } catch (Exception ex) { } } /// /// 保存 /// /// /// private void btnOk_Click(object sender, EventArgs e) { try { DataTable dataTable = (this.RightMenusControlEx.gridControl.DataSource as DataTable).TrimDeleteRows(); int successCount = 0; int faultCount = 0; foreach (DataRow item in dataTable.Rows) { if (item.RowState == DataRowState.Modified) { string sql = string.Format("update P_systempopupmenu set privilegeOper='{0}' where id='{1}'", item["privilegeOper"]+"", item["id"] + ""); int result = SqlHelper.ExecuteNonQuery(sql); if (result > 0) { successCount++; } else { faultCount++; MessageUtil.Show(item["menuname"] +"设置权限失败"); } } } MessageUtil.Show("保存完成"); } catch (Exception ex) { } } } }