#region
|
|
using System;
|
using System.Data;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Business.BLL_Permission;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Library.CommonClass;
|
using CSFrameworkV5.Models;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library.PermissionForms
|
{
|
public partial class frmRole : frmBaseDataForm
|
{
|
private bllRole _BLL;
|
|
private bllPermission _Permission;
|
|
//角色管理业务逻辑
|
private RoleActionsView _RoleActionsView;
|
private DataTable tbBM; //条码表
|
|
public frmRole()
|
{
|
InitializeComponent();
|
}
|
|
private void btnEmpty_Click(object sender, EventArgs e)
|
{
|
txt_RoleType.Text = "";
|
txt_Content.Text = "";
|
}
|
|
private void btnQuery_Click(object sender, EventArgs e)
|
{
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
var roleType = txt_RoleType.Text == "<全部>"
|
? ""
|
: txt_RoleType.Text;
|
var dt =
|
_BLL.Query(roleType,
|
txt_Content
|
.Text); //调用业务逻辑类的GetSummaryData()方法获取数据
|
DoBindingSummaryGrid(dt); //绑定主表的Grid
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
protected override void ButtonStateChanged(UpdateType currentState)
|
{
|
base.ButtonStateChanged(currentState);
|
SetDetailEditorsAccessable(_DetailGroupControl, DataChanged);
|
|
//仅新增状态可修改主键输入框
|
if (_KeyEditor != null)
|
_KeyEditor.Enabled = UpdateType.Add == currentState;
|
|
var editMode = currentState == UpdateType.Add ||
|
currentState == UpdateType.Modify;
|
_RoleActionsView.OnViewMode = !editMode; //查看模式禁止操作树视图
|
txtRoleID.Enabled = currentState == UpdateType.Add;
|
}
|
|
public override void DoAdd(IButtonInfo sender)
|
{
|
_BLL.CreateDataBinder(null);
|
|
InitTreeView(); //初始化树视图。
|
|
_RoleActionsView.CurrentRoleID = ""; //当前角号编号
|
_RoleActionsView.ShowRoleActions();
|
|
DoBindingSummaryEditor(_BLL.DataBinder); //绑定数据输入控件
|
|
SetEditorBindingValue(txtRoleType, "普通角色", true);
|
|
base.DoAdd(sender);
|
ShowDetailPage(true);
|
}
|
|
/// <summary>
|
/// 绑定输入框
|
/// </summary>
|
/// <param name="summary"></param>
|
protected void DoBindingSummaryEditor(DataTable summary)
|
{
|
DataBinder.BindingEditorPanel(gcDetailEditor, summary);
|
}
|
|
public override void DoCancel(IButtonInfo sender)
|
{
|
if (Msg.AskQuestion("要取消修改吗?")) base.DoCancel(sender);
|
}
|
|
public override void DoDelete(IButtonInfo sender)
|
{
|
AssertFocusedRow(); //检查是否选择一条记录
|
|
//调用业务逻辑类删除记录
|
var summary =
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle);
|
var key = summary[tb_MyRole.RoleID].ToStringEx(); //主键值
|
var roleType = summary[tb_MyRole.RoleType].ToStringEx(); //主键值
|
|
if (roleType == "系统角色") throw new Exception("不可删除系统角色!");
|
|
if (!Msg.AskQuestion("确定要删除?")) return;
|
|
var b = _BLL.Delete(key);
|
AssertEqual(b, true, "删除记录时发生错误!");
|
|
base.DoDelete(sender);
|
DeleteSummaryRow(_SummaryView.FocusedRowHandle); //删除Summary资料行
|
if (_SummaryView.FocusedRowHandle < 0) //删除了最後一条记录. 显示Summary页面.
|
ShowSummaryPage(true);
|
else
|
DoViewContent(_buttons.GetButtonByName(ButtonNameList.btnView));
|
}
|
|
public override void DoEdit(IButtonInfo sender)
|
{
|
AssertFocusedRow();
|
|
var roleType = ConvertEx.ToString(
|
gvSummary.GetFocusedDataRow()[tb_MyRole.RoleType].ToStringEx());
|
if (roleType == "系统角色") throw new Exception("系统角色不可修改!");
|
|
{
|
base.DoEdit(sender);
|
DoViewContent(sender);
|
ShowDetailPage(true);
|
}
|
}
|
|
public override void DoSave(IButtonInfo sender)
|
{
|
UpdateLastControl(); //更新最后一个输入控件的数据
|
|
if (!ValidatingData()) return; //检查输入完整性
|
|
var changes = _RoleActionsView.GetChanges();
|
var roleUsers = gcRoleUsers.DataSource as DataTable;
|
|
//调用业务逻辑层的Update方法提交数据
|
//bool ret = _BLL.Update(_UpdateType, _RoleActionsView.RoleActionData);
|
var ret = _BLL.Update(_UpdateType, changes, roleUsers);
|
if (ret)
|
{
|
UpdateSummaryRow(_BLL.DataBinder.Rows[0]); //刷新表格内的数据.
|
base.DoSave(sender);
|
Msg.ShowInformation("保存成功!");
|
}
|
else
|
{
|
Msg.Warning("保存失败!");
|
}
|
}
|
|
public override void DoViewContent(IButtonInfo sender)
|
{
|
AssertFocusedRow(); //检查有无记录.
|
|
var page = tcBusiness.SelectedTabPage;
|
|
var roleID =
|
ConvertEx.ToString(gvSummary.GetFocusedRowCellValue(colRoleID));
|
InitTreeView(); //初始化树视图。
|
_BLL.CreateDataBinder(
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle));
|
_RoleActionsView.CurrentRoleID = roleID; //当前角号编号
|
_RoleActionsView.ShowRoleActions(); //显示角色的权限
|
|
base.DoViewContent(sender);
|
DoBindingSummaryEditor(_BLL.DataBinder); //绑定数据输入控件
|
|
var ds = _BLL.GetRoleOwners(roleID);
|
gcMyGroups.DataSource = ds.Tables[tb_MyGroup.__TableName];
|
gcMyUser.DataSource = ds.Tables[tb_MyUser.__TableName];
|
gcRoleUsers.DataSource = ds.Tables[tb_MyUserRoles.__TableName];
|
|
ShowDetailPage(false); //用户点击ViewContent按钮可以显示Summary页
|
|
xtraTabControl1.SelectedTabPageIndex = 0;
|
}
|
|
private void frmRole_Load(object sender, EventArgs e)
|
{
|
InitializeForm();
|
SetLanguage();
|
}
|
|
protected override void InitializeForm()
|
{
|
try
|
{
|
base.InitializeForm();
|
|
_SummaryView = new DevGridView(gvSummary);
|
var sqlstr = "SELECT BM002 部门编号,BM003 部门名称 FROM GS_BM ";
|
|
_ActiveEditor = txtRoleID;
|
_DetailGroupControl = gcDetailEditor;
|
gvSummary.DoubleClick += OnGridViewDoubleClick; //主表DoubleClict
|
|
frmGridCustomize.RegisterGrid(gvSummary);
|
DevStyle.SetGridControlLayout(gcSummary, false); //表格设置
|
DevStyle.SetSummaryGridViewLayout(gvSummary);
|
|
_BLL = new bllRole();
|
_Permission = new bllPermission();
|
_RoleActionsView = new RoleActionsView(tvRoleActions);
|
tbBM = _BLL.GETDAT(sqlstr);
|
txtRoleID.Properties.ValueMember = "部门名称";
|
txtRoleID.Properties.DisplayMember = "部门名称";
|
//txtRoleID.Properties.SH = false;
|
txtRoleID.Properties.DataSource = tbBM;
|
ShowSummary(); //下载显示数据.
|
DataBinder.BindingLookupEditDataSource(lookUser,
|
DataDictCache.Cache.User, tb_MyUser.UserName,
|
tb_MyUser.Account);
|
|
BindingSummaryNavigator(controlNavigatorSummary,
|
gcSummary); //Summary导航条.
|
ShowSummaryPage(true); //一切初始化完毕後显示SummaryPage
|
}
|
catch (Exception ex)
|
{
|
Msg.ShowException(ex);
|
}
|
}
|
|
private void InitTreeView()
|
{
|
if (_RoleActionsView.IsCreatedTree == false)
|
{
|
//下载生成树相关的基础资料
|
_RoleActionsView.RoleData = _Permission.GetRoleData();
|
_RoleActionsView.ActionsData = _Permission.GetActionData();
|
_RoleActionsView.ActionCustomNameData =
|
_Permission.GetFormTagCustomName();
|
|
//管理员取全部菜单数据
|
if (Loginer.CurrentUser.IsAdmin())
|
_RoleActionsView.MenuData = _Permission.GetMenuData();
|
else //取当前用户的菜单数据
|
_RoleActionsView.MenuData =
|
_Permission.GetMenuByUser(Loginer.CurrentUser.Account,
|
Loginer.CurrentUser.DBID);
|
|
_RoleActionsView.InitTree(""); //创建树视图
|
}
|
|
_RoleActionsView.OnViewMode = false;
|
}
|
|
private void menuCollase_Click(object sender, EventArgs e)
|
{
|
if (tvRoleActions.SelectedNode != null)
|
tvRoleActions.SelectedNode.Collapse();
|
}
|
|
private void menuExpand_Click(object sender, EventArgs e)
|
{
|
if (tvRoleActions.SelectedNode != null)
|
tvRoleActions.SelectedNode.ExpandAll();
|
}
|
|
private void ShowSummary()
|
{
|
try
|
{
|
_BLL.GetSummaryData(
|
true); //调用业务逻辑类的GetSummaryData()方法获取数据
|
DoBindingSummaryGrid(_BLL.SummaryTable); //绑定主表的Grid
|
ShowSummaryPage(true); //显示Summary页面.
|
}
|
catch (Exception ex)
|
{
|
Msg.ShowException(ex);
|
}
|
}
|
|
private void tvRoleActions_MouseDown(object sender, MouseEventArgs e)
|
{
|
//在角色的权限树按下鼠标键,选择结点,设置高亮状态
|
var info = tvRoleActions.HitTest(e.Location);
|
tvRoleActions.SelectedNode = info.Node;
|
}
|
|
private bool ValidatingData()
|
{
|
if (txtRoleID.Text == string.Empty)
|
{
|
Msg.Warning("编号不能为空!");
|
txtRoleID.Focus();
|
return false;
|
}
|
|
if (txtRoleName.Text == string.Empty)
|
{
|
Msg.Warning("名称不能为空!");
|
txtRoleName.Focus();
|
return false;
|
}
|
|
if (_UpdateType == UpdateType.Add)
|
if (_BLL.IsExists(txtRoleID.Text))
|
{
|
Msg.Warning("编号已存在!");
|
txtRoleID.Focus();
|
return false;
|
}
|
|
return true;
|
}
|
}
|
}
|