293 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Drawing;
 | |
| using System.Data;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using DocumentManagement.Properties;
 | |
| 
 | |
| namespace DocumentManagement
 | |
| {
 | |
|     [DisplayName("文书目录控件")]
 | |
|     [Description("文书目录")]
 | |
|     [ToolboxItem(true)]
 | |
|     public partial class ucClassify : UserControl
 | |
|     {
 | |
|         [BrowsableAttribute(true), Description("是否为只读模式")]
 | |
|         public bool IsReadOnly { get; set; }
 | |
| 
 | |
|         [BrowsableAttribute(false)]
 | |
|         public TreeView tv { get { return this.treeView1; } }
 | |
| 
 | |
|         [BrowsableAttribute(false)]
 | |
|         public ContextMenuStrip ms { get { return this.contextMenuStrip1; } }
 | |
| 
 | |
|         public ucClassify()
 | |
|         {
 | |
|             InitializeComponent();
 | |
| #if DEBUG
 | |
|             TreeNode t = new TreeNode("测试项目1");
 | |
|             t.Nodes.Add(new TreeNode("测试子项目1"));
 | |
|              TreeNode t1 = new TreeNode("测试项目2");
 | |
|             t1.Nodes.Add(new TreeNode("测试子项目2"));
 | |
|             t1.Nodes.Add(new TreeNode("测试子项目3"));
 | |
|             treeView1.Nodes.Add(t);
 | |
|             treeView1.Nodes.Add(t1);
 | |
| #endif
 | |
|         }
 | |
|         
 | |
|         /// <summary>
 | |
|         /// 刷新目录
 | |
|         /// </summary>
 | |
|         /// <param name="txtName">节点名称</param>
 | |
|         public void RefreshTree(string txtName = null)
 | |
|         {
 | |
|             this.treeView1.Nodes.Clear();
 | |
|             //加载节点
 | |
|             List<PrintTemplate> listT = DocumentDAL.LoadTemplateTree();
 | |
|             List<PrintTemplate> listP = listT.Where(x => x.ParentId == 0).OrderBy(x => x.TemplateOrder).ToList();
 | |
| 
 | |
|             foreach (var item in listP)
 | |
|             {
 | |
|                 TreeNode node = new TreeNode(item.XmlFileName);
 | |
|                 node.Name = item.Id.ToString();
 | |
|                 node.Tag = item;
 | |
|                 treeView1.Nodes.Add(node);
 | |
|                 node.ImageIndex = 0;
 | |
| 
 | |
|                 List<PrintTemplate> listC1 = listT.Where(x => x.ParentId == item.Id).OrderBy(x => x.TemplateOrder).ToList();
 | |
|                 foreach (var item2 in listC1)
 | |
|                 {
 | |
|                     TreeNode node2 = new TreeNode(item2.XmlFileName);
 | |
|                     node2.Name = item2.Id.ToString();
 | |
|                     node2.Tag = item2;
 | |
|                     node2.ImageIndex = 2;
 | |
|                     node2.SelectedImageIndex = 2;
 | |
|                     node.Nodes.Add(node2);
 | |
|                     if (txtName != null && txtName == node2.Name)
 | |
|                     {
 | |
|                         treeView1.SelectedNode = node2;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             this.treeView1.ExpandAll();
 | |
|             this.treeView1.Refresh();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 刷新目录
 | |
|         /// </summary>
 | |
|         /// <param name="patientId">患者Id</param>
 | |
|         public void RefreshTree(int patientId)
 | |
|         {
 | |
|             this.treeView1.Nodes.Clear();
 | |
|             //加载节点
 | |
|             List<PrintTemplate> listT = DocumentDAL.LoadTemplateTree(patientId);
 | |
|             List<PrintTemplate> listP = listT.Where(x => x.ParentId == 0).OrderBy(x => x.TemplateOrder).ToList();
 | |
| 
 | |
|             foreach (var item in listP)
 | |
|             {
 | |
|                 TreeNode node = new TreeNode(item.XmlFileName);
 | |
|                 node.Name = item.Id.ToString();
 | |
|                 node.Tag = item.PrintDocumentId;
 | |
|                 treeView1.Nodes.Add(node);
 | |
|                 node.ImageIndex = 0;
 | |
| 
 | |
|                 List<PrintTemplate> listC1 = listT.Where(x => x.ParentId == item.Id).OrderBy(x => x.TemplateOrder).ToList();
 | |
|                 foreach (var item2 in listC1)
 | |
|                 {
 | |
|                     TreeNode node2 = new TreeNode(item2.XmlFileName);
 | |
|                     node2.Name = item2.Id.ToString();
 | |
|                     node2.Tag = item2.PrintDocumentId;
 | |
|                     node2.ImageIndex = item2.PrintDocumentId > 0 ? 1 : 2;
 | |
|                     node2.SelectedImageIndex = item2.PrintDocumentId > 0 ? 1 : 2;
 | |
|                     node.Nodes.Add(node2);
 | |
|                 }
 | |
|             }
 | |
|             this.treeView1.ExpandAll();
 | |
|             this.treeView1.Refresh();
 | |
|         }
 | |
| 
 | |
|         void treeView1_MouseClick(object sender, MouseEventArgs e)
 | |
|         {
 | |
|             TreeNode node = treeView1.SelectedNode;
 | |
|             if (e.Button == MouseButtons.Right)
 | |
|             {
 | |
|                 if (node != null && node.Parent == null)
 | |
|                 {
 | |
|                     this.添加子目录ToolStripMenuItem.Enabled = true;
 | |
|                     this.删除当前节点ToolStripMenuItem.Enabled = false;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     this.添加子目录ToolStripMenuItem.Enabled = false;
 | |
|                     this.删除当前节点ToolStripMenuItem.Enabled = true;
 | |
|                 }
 | |
|                 contextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
 | |
|         {
 | |
|             if (((TreeNode)e.Item).Parent == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
|             DoDragDrop(e.Item, DragDropEffects.Move);
 | |
|         }
 | |
| 
 | |
|         void treeView1_DragEnter(object sender, DragEventArgs e)
 | |
|         {
 | |
|             if (e.Data.GetDataPresent(typeof(TreeNode)))
 | |
|                 e.Effect = DragDropEffects.Move;
 | |
|             else
 | |
|                 e.Effect = DragDropEffects.None;
 | |
|         }
 | |
| 
 | |
|         void treeView1_DragDrop(object sender, DragEventArgs e)
 | |
|         {
 | |
|             TreeNode moveNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
 | |
|             Point p = treeView1.PointToClient(new Point(e.X, e.Y));
 | |
|             TreeNode DropNode = this.treeView1.GetNodeAt(p);
 | |
|             if (DropNode == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
|             if (DropNode.Parent != null)
 | |
|             {
 | |
|                 DropNode = DropNode.Parent;
 | |
|             }
 | |
|             // 1.目标节点不是被拖拽接点的子节点。2.目标节点不是被拖拽节点本身
 | |
|             if (DropNode.Parent != moveNode 
 | |
|                 && DropNode != moveNode)
 | |
|             {
 | |
|                 TreeNode tempNode = moveNode;
 | |
|                 // 将被拖拽节点从原来位置删除。
 | |
|                 moveNode.Remove();
 | |
|                 // 在目标节点下增加被拖拽节点
 | |
|                 DropNode.Nodes.Add(tempNode);
 | |
|                 DropNode.Expand();
 | |
|             }
 | |
|             // 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
 | |
|             //if (DropNode == null)
 | |
|             //{
 | |
|             //    TreeNode DragNode = moveNode;
 | |
|             //    moveNode.Remove();
 | |
|             //    treeView1.Nodes.Add(DragNode);
 | |
|             //}
 | |
| 
 | |
|             
 | |
|         }
 | |
| 
 | |
|         private void 下移ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (treeView1.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             if (treeView1.SelectedNode.NextNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("当前节点已是末节点!");
 | |
|                 return;
 | |
|             }
 | |
|             TreeNode Node = treeView1.SelectedNode;
 | |
|             TreeNode NextNode = Node.NextNode;
 | |
|             TreeNode NewNode = (TreeNode)Node.Clone();
 | |
|             if (Node.Parent == null)
 | |
|             {
 | |
|                 treeView1.Nodes.Insert(NextNode.Index + 1, NewNode);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Node.Parent.Nodes.Insert(NextNode.Index + 1, NewNode);
 | |
|             }
 | |
|             Node.Remove();
 | |
|             treeView1.SelectedNode = NewNode;
 | |
|             RefreshOrders(NewNode);
 | |
|         }
 | |
| 
 | |
|         private void RefreshOrders(TreeNode node)
 | |
|         {
 | |
|             TreeNode pNode = node.Parent;
 | |
|             List<string> ls = new List<string>();
 | |
|             if (pNode == null)
 | |
|             {
 | |
|                 for (int i = 0; i < this.treeView1.Nodes.Count; i++)
 | |
|                 {
 | |
|                     ls.Add(treeView1.Nodes[i].Name);
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 for (int i = 0; i < pNode.Nodes.Count; i++)
 | |
|                 {
 | |
|                     ls.Add(pNode.Nodes[i].Name);
 | |
|                 }
 | |
|             }
 | |
|             if (ls.Count > 0)
 | |
|             {
 | |
|                 DocumentDAL.SetTempOrders(ls);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void 上移ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (treeView1.SelectedNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("请选择一个节点!");
 | |
|                 return;
 | |
|             }
 | |
|             if (treeView1.SelectedNode.PrevNode == null)
 | |
|             {
 | |
|                 MessageBox.Show("当前节点已是第一节点!");
 | |
|                 return;
 | |
|             }
 | |
|             TreeNode Node = treeView1.SelectedNode;
 | |
|             TreeNode PreNode = Node.PrevNode;
 | |
|             TreeNode NewNode = (TreeNode)Node.Clone();
 | |
|             if (Node.Parent == null)
 | |
|             {
 | |
|                 treeView1.Nodes.Insert(PreNode.Index, NewNode);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Node.Parent.Nodes.Insert(PreNode.Index, NewNode);
 | |
|             }
 | |
|             Node.Remove();
 | |
|             treeView1.SelectedNode = NewNode;
 | |
|             RefreshOrders(NewNode);
 | |
|         }
 | |
| 
 | |
|         private void 新建同级目录ToolStripMenuItem_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             frmTitle f = new frmTitle();
 | |
|             f.model = new PrintTemplate();
 | |
|             f.ShowDialog();
 | |
| 
 | |
|         }
 | |
| 
 | |
|         private void ucClassify_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             ImageList myImageList = new ImageList();
 | |
|             myImageList.Images.Add(Resources.父节点);
 | |
|             myImageList.Images.Add(Resources.完成2);
 | |
|             myImageList.Images.Add(Resources.未完成2);
 | |
|             treeView1.ImageList = myImageList;
 | |
|             if (!IsReadOnly)
 | |
|             {
 | |
|                 treeView1.AllowDrop = true;
 | |
|                 treeView1.ItemDrag += new ItemDragEventHandler(treeView1_ItemDrag);
 | |
|                 treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
 | |
|                 treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);
 | |
|                 treeView1.MouseClick += new MouseEventHandler(treeView1_MouseClick);
 | |
|                 //RefreshTree();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|     }
 | |
| }
 |