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