AIMS/AIMSControls/DocManager/frmUserTempPurviewDetail.cs
2023-08-16 22:32:16 +08:00

188 lines
5.7 KiB
C#

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 DocumentManagement.UI
{
public partial class frmUserTempPurviewDetail : Form
{
public int RoleId = 0;
public string RoleName = "";
public frmUserTempPurviewDetail()
{
InitializeComponent();
}
private void frmUserTempPurviewDetail_Load(object sender, EventArgs e)
{
label2.Text = RoleName;
InitTreeView();
}
private void InitTreeView()
{
treeView1.Nodes.Clear();
List<Model.PrintTemplate> PrintTemplateList = new List<Model.PrintTemplate>();
Model.PrintTemplate PrintTemplateObj = new Model.PrintTemplate();
PrintTemplateList = DAL.PrintTemplateDB.GetPrintTemplateRootList(0);
for (int i = 0; i < PrintTemplateList.Count; i++)
{
PrintTemplateObj = DAL.PrintTemplateDB.GetModel(PrintTemplateList[i].Id, RoleId);
TreeNode Node = treeView1.Nodes.Add(PrintTemplateObj.Id.ToString(), PrintTemplateObj.XmlFileName.ToString());
BuildChildNode(PrintTemplateObj, Node);
}
SelectCheckNodes();
}
private void BuildChildNode(Model.PrintTemplate 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].XmlFileName);
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);
}
DAL.UserTempPurviewDB.Delete(RoleId);
for (int i = 0; i < listNodes.Count; i++)
{
Model.UserTempPurview UserPurview = new Model.UserTempPurview();
UserPurview.TemplateId = int.Parse(listNodes[i].Name.ToString());
UserPurview.RoleId = RoleId;
DAL.UserTempPurviewDB.Add(UserPurview);
}
InitTreeView();
MessageBox.Show("医疗文书权限分配成功!");
}
}
catch (Exception en)
{
MessageBox.Show("医疗文书权限分配失败!" + en.Message);
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
Close();
}
#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 treeView1_AfterSelect(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 = DAL.UserTempPurviewDB.GetPurviewListByRoleId(RoleId);
SelectCheckNode(node, Purview);
}
}
}
}