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;
using YX.BLL;
using YX.Entity;
namespace YX
{
public partial class FrmRoleEdit : Form
{
SystemMenu_Bll menu_bll = new SystemMenu_Bll();
SystemRole_Bll role_bll = new SystemRole_Bll();
OperationType type;
FrmRole _frmRole;
string RoleID = "";
public FrmRoleEdit(FrmRole frmRole)
{
InitializeComponent();
_frmRole = frmRole;
type = OperationType.Add;
this.Text = "角色管理-添加";
com_ParentId.DataSource = role_bll.GetRoleParentId();
com_ParentId.DisplayMember = "Roles_Name";
com_ParentId.ValueMember = "Roles_ID";
}
public FrmRoleEdit(FrmRole frmRole,ref DataGridViewRow dvr)
{
InitializeComponent();
_frmRole = frmRole;
type = OperationType.Edit;
this.Text = "角色管理-修改";
com_ParentId.DataSource = role_bll.GetRoleParentId();
com_ParentId.DisplayMember = "Roles_Name";
com_ParentId.ValueMember = "Roles_ID";
RoleID = dvr.Cells["Roles_ID"].Value.ToString();
txt_RoleName.Text= dvr.Cells["Roles_Name"].Value.ToString();
txt_RoleRemark.Text= dvr.Cells["Roles_Remark"].Value==null?"": dvr.Cells["Roles_Remark"].Value.ToString();
txt_SortCode.Text= dvr.Cells["SortCode"].Value.ToString();
com_ParentId.SelectedValue= dvr.Cells["ParentId"].Value.ToString();
}
private void FrmRoleEdit_Load(object sender, EventArgs e)
{
BindRoleRightTreeView();
if (tree_RoleRight.Nodes.Count > 0)
{
tree_RoleRight.Nodes[0].Expand();
}
}
private void btn_concel_Click(object sender, EventArgs e)
{
this.Close();
}
#region 角色权限
///
/// 用户权限菜单树列表
///
public void BindRoleRightTreeView()
{
try
{
this.tree_RoleRight.ImageList = imageList1;
this.tree_RoleRight.Nodes.Clear();
var list = menu_bll.GetSysMenus();
var role_right_list = menu_bll.GetRoleRightByCondition(o => o.Base_Roles.Roles_ID == RoleID);
var parents = list.Where(o => o.ParentId == "0");
foreach (var item in parents)
{
TreeNode tn = new TreeNode();
tn.Text = item.Menu_Name;
tn.Tag = item.Menu_Id;
tn.ImageIndex = item.Menu_Img == null ? 0 : item.Menu_Img.Value;
foreach (var role_right in role_right_list)
{
if (item.Menu_Id == role_right.Menu_Id)
{
tn.Checked = true;
}
}
RoleRightFillTree(tn, list, role_right_list);
tree_RoleRight.Nodes.Add(tn);
}
}
catch (Exception)
{
throw;
}
}
private void RoleRightFillTree(TreeNode node, List list, List role_right_list)
{
var childs = list.Where(o => o.ParentId == node.Tag.ToString());
if (childs.Count() > 0)
{
foreach (var item in childs)
{
TreeNode tnn = new TreeNode();
tnn.Text = item.Menu_Name;
tnn.Tag = item.Menu_Id;
tnn.ImageIndex = item.Menu_Img == null ? 0 : item.Menu_Img.Value;
foreach (var role_right in role_right_list)
{
if (item.Menu_Id == role_right.Menu_Id)
{
tnn.Checked = true;
}
}
if (item.ParentId == node.Tag.ToString())
{
RoleRightFillTree(tnn, list, role_right_list);
}
node.Nodes.Add(tnn);
}
}
}
#endregion
#region 保存
private void btn_save_Click(object sender, EventArgs e)
{
try
{
Base_Roles roles = new Base_Roles();
if (string.IsNullOrEmpty(RoleID))
{
roles.CreateDate = DateTime.Now;
roles.CreateUserId = FrmLogin.LoginUserID;
roles.CreateUserName = FrmLogin.loginUserName;
roles.Roles_ID = Guid.NewGuid().ToString();
}
else
{
roles.ModifyDate = DateTime.Now;
roles.ModifyUserId = FrmLogin.LoginUserID;
roles.ModifyUserName = FrmLogin.loginUserName;
roles.Roles_ID = RoleID;
}
RoleRightList.Clear();
CheckRoleRightTreeViewNode(tree_RoleRight.Nodes);
roles.Base_RoleRight = RoleRightList;
roles.ParentId = com_ParentId.SelectedValue.ToString();
roles.Roles_Name = txt_RoleName.Text;
roles.Roles_Remark = txt_RoleRemark.Text;
roles.SortCode = int.Parse(txt_SortCode.Text);
int isOk = 0;
if (type == OperationType.Add)
{
isOk = role_bll.AddRoles(roles);
}
else if (type == OperationType.Edit)
{
isOk = role_bll.UpdateRoles(roles);
}
if (isOk > 0)
{
MessageBox.Show("保存成功!");
this.Close();
}
else
{
MessageBox.Show("保存失败!");
}
}
catch (Exception ex)
{
System_Bll.WriteLogToDB(new Entity.Base_Log
{
CreateUserID = FrmLogin.LoginUserID,
CreateUserName = FrmLogin.loginUserName,
LocalIP = FrmLogin.LocalIP,
LogMessage = ex.Message,
Type = "系统错误!",
ClassName = typeof(FrmRoleEdit).ToString()
});
MessageBox.Show(ex.Message);
}
}
List RoleRightList = new List();
///
/// 遍历角色权限选中节点
///
///
public void CheckRoleRightTreeViewNode(TreeNodeCollection node)
{
foreach (TreeNode n in node)
{
if (n.Checked)
{
RoleRightList.Add(new Base_RoleRight
{
RoleRight_ID = Guid.NewGuid().ToString(),
Menu_Id = n.Tag.ToString(),
CreateUserName = FrmLogin.loginUserName,
CreateUserId = FrmLogin.LoginUserID,
CreateDate = DateTime.Now
});
}
CheckRoleRightTreeViewNode(n.Nodes);
}
}
#endregion
}
}