现在的位置: 首页 > 综合 > 正文

WINFORM树结构的绘制和数据表结构的绘制。

2013年10月10日 ⁄ 综合 ⁄ 共 4061字 ⁄ 字号 评论关闭

WINFORM两个树结构的绘制。

支持路径方式和数据表结构方式。

如果是在WEBFROM下修改响应的控件名。

 

调用

 

List<string> Test =new List<string>();

Test.Add(@"C:/");

Test.Add(@"C:/Temp");

Test.Add(@"C:/Temp/A");

GetTree(TreeView1, Test '//');

 

 

  1.    #region 数据树结构
  2.         /// <summary>
  3.         /// 绘制树
  4.         /// </summary>
  5.         /// <param name="Tv">树控件</param>
  6.         /// <param name="Ds">数据DATASET</param>
  7.         /// <param name="Tagindex">主键INDEX</param>
  8.         /// <param name="Textindex">文本的INDEX</param>
  9.         /// <param name="Parentindex">父目录的INDEX</param>
  10.         /// <param name="ParentStar">父的条件</param>
  11.         public static void GetTree(TreeView MyTreeView,DataTable MyDataTable,int Tagindex,int Textindex,int Parentindex,string ParentStar)
  12.         {
  13.             string ParentText = MyDataTable.Columns[Parentindex].ColumnName;
  14.             DataRow[] T = MyDataTable.Select(ParentText +"='" + ParentStar+"'");         
  15.             for (int i = 0; i != T.Length; i++)
  16.             {
  17.                 TreeNode Tn = new TreeNode();
  18.                 Tn.Text = T[i][Textindex].ToString();
  19.                 Tn.Tag = T[i][Tagindex].ToString();
  20.                 MyTreeView.Nodes.Add(Tn);
  21.                 LoadNode(Tn, MyDataTable, ParentText, Tagindex, Textindex);
  22.             }
  23.         } 
  24.         /// <summary>
  25.        /// 树的根
  26.        /// </summary>
  27.        /// <param name="tn">上级目录</param>
  28.        /// <param name="ds">数据DATASET</param>
  29.        /// <param name="ParentText">目录名称</param>
  30.        /// <param name="Tagindex">主键ID</param>
  31.        /// <param name="Textindex">名称的主键</param>
  32.         private static void LoadNode(TreeNode Tn, DataTable MyDataTable, string ParentText, int Tagindex, int Textindex)
  33.         {
  34.             DataRow[] T = MyDataTable.Select(ParentText + "='" + Tn.Tag.ToString() + "'");
  35.             for (int i = 0; i != T.Length; i++)
  36.             {
  37.                 TreeNode treeN = new TreeNode();
  38.                 treeN.Tag = T[i][Tagindex].ToString();
  39.                 treeN.Text = T[i][Textindex].ToString();
  40.                 Tn.Nodes.Add(treeN);
  41.                 LoadNode(treeN, MyDataTable, ParentText, Tagindex, Textindex);
  42.             }
  43.         }
  44.         #endregion
  45.         #region 目录树结构
  46.         /// <summary>
  47.         /// 绘制树
  48.         /// </summary>
  49.         /// <param name="MyTreeView">数控件</param>
  50.         /// <param name="PathList">数据列表 "a,b,c" "b,b,c" "a,b,d"</param>
  51.         /// <param name="SplitChar">分割符号</param>
  52.         public static void GetTree(TreeView MyTreeView, IList<string> PathList, char SplitChar)
  53.         {
  54.             for (int i = 0; i != PathList.Count; i++)
  55.             {
  56.                 int Index = 1;
  57.                 IList<string> _TempNode = PathList[i].Split(SplitChar);
  58.                 if (_TempNode[0].Trim().Length != 0)
  59.                 {
  60.                     string NodeID = _TempNode[0];
  61.                     if (MyTreeView.Nodes[NodeID] == null)
  62.                     {
  63.                         MyTreeView.Nodes.Add(NodeID, _TempNode[0]);
  64.                         AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
  65.                     }
  66.                     else
  67.                     {
  68.                         AddNode(MyTreeView.Nodes[NodeID], _TempNode, ref Index);
  69.                     }
  70.                 }
  71.             }
  72.         }
  73.         /// <summary>
  74.         /// 树的根
  75.         /// </summary>
  76.         /// <param name="Tn">上级目录</param>
  77.         /// <param name="_TempNode">数据</param>
  78.         /// <param name="Index">目前索引</param>
  79.         private static void AddNode(TreeNode Tn, IList<string> PathList, ref int Index)
  80.         {
  81.             if (Index > PathList.Count - 1) return;
  82.             if (PathList[Index].Trim().Length == 0)
  83.             {
  84.                 Index++;
  85.                 if (Index > PathList.Count - 1) return;
  86.             }
  87.             string NodeID = PathList[Index];
  88.             if (Tn.Nodes[NodeID] == null)
  89.             {
  90.                 Tn.Nodes.Add(NodeID, PathList[Index]);
  91.                 Index++;
  92.                 AddNode(Tn.Nodes[NodeID], PathList, ref Index);
  93.             }
  94.             else
  95.             {
  96.                 Index++;
  97.                 AddNode(Tn.Nodes[NodeID], PathList, ref Index);
  98.             }
  99.         }
  100.      
  101.         #endregion

 

 

 

 

 

抱歉!评论已关闭.