AIMS/AIMSControls/DataDictionary/frmUserPurviewDetail.cs
2023-08-16 22:32:16 +08:00

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);
}
}
}
}