87 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using VEPROMS.CSLA.Library;
 | |
| using Csla;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace WinApp
 | |
| {
 | |
| 	public class FolderTreeNode : TreeNode
 | |
| 	{
 | |
| 		FolderTreeNode(string s) : base(s) 
 | |
| 		{
 | |
| 			this.Name="ID:" + s;
 | |
| 		}
 | |
| 		FolderTreeNode(FolderInfo folderinfo)
 | |
| 			: base(folderinfo.Name)
 | |
| 		{
 | |
| 			_folderinfo = folderinfo;
 | |
| 			this.Name = "ID:" + folderinfo.FolderID.ToString();
 | |
| 		}
 | |
| 		private FolderInfo _folderinfo;
 | |
| 		public FolderInfo FolderInfo
 | |
| 		{
 | |
| 			get { return _folderinfo; }
 | |
| 			set
 | |
| 			{
 | |
| 				_folderinfo = value;
 | |
| 			}
 | |
| 		}
 | |
| 		private Dictionary<int, FolderTreeNode> _findTree = null;
 | |
| 		private Dictionary<int, FolderTreeNode> FindTree
 | |
| 		{
 | |
| 			get { return _findTree; }
 | |
| 			set { _findTree = value; }
 | |
| 		}
 | |
| 		public FolderTreeNode FindTreeNode(int folderID)
 | |
| 		{
 | |
| 			if (_findTree != null) return _findTree[folderID];
 | |
| 			return null;
 | |
| 		}
 | |
| 		public static FolderTreeNode BuildTreeList()
 | |
| 		{
 | |
| 			FolderTreeNode root = null;
 | |
| 			FolderInfoList fil = FolderInfoList.Get();
 | |
| 			Dictionary<int, FolderTreeNode> dicMissing = new Dictionary<int, FolderTreeNode>();
 | |
| 			Dictionary<int, FolderTreeNode> dicExists = new Dictionary<int, FolderTreeNode>();
 | |
| 			foreach (FolderInfo fi in fil)
 | |
| 			{
 | |
| 				FolderTreeNode ftp = null;
 | |
| 				if (dicExists.ContainsKey(fi.ParentID))
 | |
| 				{
 | |
| 					ftp = dicExists[fi.ParentID];
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					if (fi.ParentID != 0)
 | |
| 					{
 | |
| 						ftp = new FolderTreeNode(fi.ParentID.ToString());
 | |
| 						dicMissing.Add(fi.ParentID, ftp);
 | |
| 						dicExists.Add(fi.ParentID, ftp);
 | |
| 					}
 | |
| 				}
 | |
| 				FolderTreeNode ft = null;
 | |
| 				if (dicMissing.ContainsKey(fi.FolderID))
 | |
| 				{
 | |
| 					ft = dicMissing[fi.FolderID];
 | |
| 					ft.FolderInfo = fi;
 | |
| 					dicMissing.Remove(fi.FolderID);
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					ft = new FolderTreeNode(fi);
 | |
| 					dicExists.Add(fi.FolderID, ft);
 | |
| 				}
 | |
| 				if (fi.ParentID == 0)
 | |
| 					root = ft;
 | |
| 				else
 | |
| 					ftp.Nodes.Add(ft);
 | |
| 			}
 | |
| 			root.FindTree = dicExists;
 | |
| 			return root;
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 |