194 lines
5.8 KiB
C#
194 lines
5.8 KiB
C#
using AIMSBLL;
|
|
using AIMSExtension;
|
|
using AIMSModel;
|
|
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 AIMS.PublicUI.UI
|
|
{
|
|
public partial class frmUserPurviewDetail : Form
|
|
{
|
|
public int RoleId = 0;
|
|
public string RoleName = "";
|
|
public frmUserPurviewDetail()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
private void frmUserPurviewDetail_Load(object sender, EventArgs e)
|
|
{
|
|
label2.Text = RoleName;
|
|
InitTreeView();
|
|
}
|
|
|
|
private void InitTreeView()
|
|
{
|
|
treeView1.Nodes.Clear();
|
|
|
|
List<AIMSModel.Menu> MenuList = new List<AIMSModel.Menu>();
|
|
AIMSModel.Menu Menu = new AIMSModel.Menu();
|
|
MenuList = BMenu.GetMenuRootList(0);
|
|
|
|
for (int i = 0; i < MenuList.Count; i++)
|
|
{
|
|
Menu = BMenu.GetMenuById(MenuList[i].Id.Value ,AIMSExtension.PublicMethod.RoleId,1);
|
|
TreeNode Node = treeView1.Nodes.Add(Menu.Id.ToString(), Menu.Name);
|
|
BuildChildNode(Menu, Node);
|
|
}
|
|
|
|
SelectCheckNodes();
|
|
}
|
|
|
|
private void BuildChildNode(AIMSModel.Menu Menu, TreeNode ParentNode)
|
|
{
|
|
for (int i = 0; i < Menu.Children.Count; i++)
|
|
{
|
|
TreeNode Node = ParentNode.Nodes.Add(Menu.Children[i].Id.ToString(), Menu.Children[i].Name);
|
|
BuildChildNode(Menu.Children[i], Node);
|
|
}
|
|
}
|
|
|
|
private void btnSave_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (MessageBox.Show("确定要分配该角色吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
List<TreeNode> listNodes = new List<TreeNode>();
|
|
foreach (TreeNode node in treeView1.Nodes)
|
|
{
|
|
FindCheckNode(node, listNodes);
|
|
}
|
|
BUserPurview.Delete(RoleId);
|
|
for (int i = 0; i < listNodes.Count; i++)
|
|
{
|
|
UserPurview UserPurview = new UserPurview();
|
|
UserPurview.MenuId = int.Parse(listNodes[i].Name.ToString());
|
|
UserPurview.RoleId = RoleId;
|
|
BUserPurview.Insert(UserPurview);
|
|
}
|
|
InitTreeView();
|
|
////dgvRole_CellMouseClick(null, null);
|
|
MessageBox.Show("权限分配成功!");
|
|
AIMSExtension.PublicMethod.RoleName = BMenu.GetMenuRootListManageStr(AIMSExtension.PublicMethod.RoleId, "功能权限");
|
|
}
|
|
}
|
|
catch (Exception en)
|
|
{
|
|
MessageBox.Show("权限分配失败!" + en.Message);
|
|
}
|
|
}
|
|
|
|
#region 保存节点数据
|
|
private void FindCheckNode(TreeNode node, List<TreeNode> listNodes)
|
|
{
|
|
|
|
if (node.Checked)
|
|
{
|
|
listNodes.Add(node);
|
|
}
|
|
foreach (TreeNode childnode in node.Nodes)
|
|
{
|
|
FindCheckNode(childnode, listNodes);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 根据角色选择节点
|
|
|
|
private void SelectCheckNode(TreeNode node, List<string> listNodes)
|
|
{
|
|
|
|
for (int i = 0; i < listNodes.Count; i++)
|
|
{
|
|
if (node.Name == listNodes[i].ToString())
|
|
{
|
|
node.Checked = true;
|
|
}
|
|
}
|
|
|
|
foreach (TreeNode childnode in node.Nodes)
|
|
{
|
|
SelectCheckNode(childnode, listNodes);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
|
|
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
|
|
{
|
|
if (e.Action != TreeViewAction.Unknown)
|
|
{
|
|
SetNodeCheckStatus(e.Node, e.Node.Checked);
|
|
SetNodeStyle(e.Node);
|
|
}
|
|
}
|
|
|
|
private void SetNodeCheckStatus(TreeNode tn, bool Checked)
|
|
{
|
|
|
|
if (tn == null) return;
|
|
foreach (TreeNode tnChild in tn.Nodes)
|
|
{
|
|
|
|
tnChild.Checked = Checked;
|
|
|
|
SetNodeCheckStatus(tnChild, Checked);
|
|
|
|
}
|
|
TreeNode tnParent = tn;
|
|
}
|
|
|
|
private void SetNodeStyle(TreeNode Node)
|
|
{
|
|
int nNodeCount = 0;
|
|
if (Node.Nodes.Count != 0)
|
|
{
|
|
foreach (TreeNode tnTemp in Node.Nodes)
|
|
{
|
|
if (tnTemp.Checked == true)
|
|
nNodeCount++;
|
|
}
|
|
|
|
if (nNodeCount == Node.Nodes.Count)
|
|
{
|
|
Node.Checked = true;
|
|
Node.ExpandAll();
|
|
}
|
|
else if (nNodeCount == 0)
|
|
{
|
|
Node.Checked = false;
|
|
Node.Collapse();
|
|
}
|
|
else
|
|
{
|
|
Node.Checked = true;
|
|
}
|
|
}
|
|
//当前节点选择完后,判断父节点的状态,调用此方法递归。
|
|
if (Node.Parent != null)
|
|
SetNodeStyle(Node.Parent);
|
|
}
|
|
|
|
|
|
public void SelectCheckNodes()
|
|
{
|
|
foreach (TreeNode node in treeView1.Nodes)
|
|
{
|
|
List<string> Purview = new List<string>();
|
|
Purview = BUserPurview.GetPurviewListByRoleId(RoleId);
|
|
SelectCheckNode(node, Purview);
|
|
}
|
|
}
|
|
}
|
|
}
|