Files
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

284 lines
9.8 KiB
C#

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
{
/// <summary>
/// 角色表
/// </summary>
/// <value>The parent value.</value>
public DataTable RoleTable
{
get { return this.RoleControlEx.gridControl.DataSource as DataTable; }
set { this.RoleControlEx.gridControl.DataSource = value; }
}
/// <summary>
///人员表
/// </summary>
/// <value>The parent value.</value>
public DataTable PersonnelTable
{
get { return this.PeopleControlEx.gridControl.DataSource as DataTable; }
set { this.PeopleControlEx.gridControl.DataSource = value; }
}
/// <summary>
/// 主表sql后缀条件(不同地方的右键条件不一样)
/// </summary>
public ModuleType Type;
/// <summary>
///
/// </summary>
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;
}
/// <summary>
/// 主表数据源
/// </summary>
private void InitializeDataSource()
{
this.RightMenusControlEx.gridControl.DataSource = PowerImpl.GetRightMenus(ModuleCode, Type);
this.RightMenusControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
this.RightGridView_Click(RightMenusControlEx.GridView, null);
}
/// <summary>
/// <para>说明:初始化分割条位置</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitSpliterPosition()
{
string spliterPosition = IniHelper.Read(string.Format("FrmPermissionClassification__splitMain{0}", "FrmRightMenus"));
if (!string.IsNullOrEmpty(spliterPosition)) this.splitMain.SplitterPosition = Convert.ToInt32(spliterPosition);
}
/// <summary>
/// 分割条改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SplitMain_SplitterPositionChanged(object sender, EventArgs e)
{
IniHelper.Write(string.Format("FrmPermissionClassification__splitMain{0}", "FrmRightMenus"), this.splitMain.SplitterPosition + "");
}
/// <summary>
/// 默认绑定列数据
/// </summary>
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;
}
/// <summary>
/// 默认绑定事件
/// </summary>
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;
}
/// <summary>
/// 角色或人员拖拽到文本
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DragMemo_OnDragComplete(object sender, GridDragMemoArgs e)
{
try
{
if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return;
string userNames = string.Empty;
List<string> 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)
{
}
}
/// <summary>
/// 选中权限分类中的行,在下方文本框中显示选中行人员
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 = "";
}
}
/// <summary>
/// 文本框的值改变时,改变选中行的值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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)
{
}
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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)
{
}
}
}
}