188 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     
 | |
|   
 | |
|     }
 | |
| }
 |