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